Исключения в языке

Objective-C

Поддержка компилятором исключений базируется на четырех директивах компилятора:

  • @try - Определяет блок кода, который является областью обработки исключений: код, который потенциально может вызвать исключение.
  • @catch() - Определяет блок, содержащий код для обработки исключения в @try блоке. Параметр@catch это объект исключения , возбужденный на локальном уровне; как правило это объект NSException, но могут быть и другие типы объектов, например NSString.
  • @finally - Определяет блок кода, который будет выполнен в любом случае, было возбуждено исключение или нет.
  • @throw - Возбуждает исключение, эта директива практически идентична в поведении методу raise NSException. Вы обычно возбуждаете NSException объекты, но можете не ограничиваться ими.
Важно: Cocoa framework может обрабатывать только исключения NSException, поэтому, чтобы не наплодить ошибок старайтесь, также придерживаться NSException в своем коде для возбуждения исключений, и их обработки, но это ни вкоей мере не ограничивает Вас в использовании своих объектов возбуждения и обработки исключений.

Следующий пример покажет обработку и возбуждение исключения NSException, а также действие @finally, которое будет вызвано в любом случае и гарантирует в данном примере, что не произойдет утечки памяти из за объекта-примера myObj:

myObj* my=[[myObject alloc] init]; // создали какой либо свой объект
@try {
    NSException *e = [NSException
        exceptionWithName:@"FileNotFoundException"
        reason:@"File Not Found on System"
        userInfo:nil]; // Создали объект класса NSException
    @throw e; // возбудили исключение
}
@catch(NSException *e) {
    @throw; // перевозбудили e исключение
}
@finally {
   [myObj release];// освободили свой объект вне зависимости от исключения
}
 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac