Обработка исключительных ситуаций и ошибок во избежание аварийного завершения программы @try - @catch в Objective-C. происходит следующим образом.
Выполнение программы в блоке @try проиходит как обычно. Однако, если один из операторов в этом блоке выдает ошибку, то работа программы не прекращается аварийно, а управление передается в блок @catch, где продолжается ее выполнение. В блоке @catch вы можете узнать более подробно о причинах и месте ошибки и правильно завершить выполнение программы.
Блок @finally выполнит код, заключенный в нем, независимо от того произошла ли ошибка в блоке @try или нет.
Директива @throw позволяет создавать ваше собственное исключение. Ее можно использовать для создания конкретного исключения или внутри блока @catch для создания той же исключительной ситуации повторно, которая которая вызвала переход в этот блок.
@try
{
оператор
оператор
оператор
}
@catch (NSException *exception)
{
оператор
оператор
оператор }
#import "Fraction.h"
int main ()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction *f = [[Fraction alloc] init];
@try
{
[f noSuchMethod];
}
@catch (NSException *exception)
{
NSLog (@"Обнаружена ошибка с именем %@ и по причине %@.", [exception name], [exception reason]);
}
/*
Метод name считывает имя исключения (ошибки), а метод reason указывает причину ошибки (которую раньше система runtime выводила автоматически).
*/
NSLog (@"Выполнение программы далее продалжается.");
[f release];
[pool drain];
return 0;
}
Как видите, выполнять обработку исключений через try - catch Objective-C значительно просто.
Выполнение программы в блоке @try проиходит как обычно. Однако, если один из операторов в этом блоке выдает ошибку, то работа программы не прекращается аварийно, а управление передается в блок @catch, где продолжается ее выполнение. В блоке @catch вы можете узнать более подробно о причинах и месте ошибки и правильно завершить выполнение программы.
Блок @finally выполнит код, заключенный в нем, независимо от того произошла ли ошибка в блоке @try или нет.
Директива @throw позволяет создавать ваше собственное исключение. Ее можно использовать для создания конкретного исключения или внутри блока @catch для создания той же исключительной ситуации повторно, которая которая вызвала переход в этот блок.
@try
{
оператор
оператор
оператор
}
@catch (NSException *exception)
{
оператор
оператор
оператор }
#import "Fraction.h"
int main ()
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction *f = [[Fraction alloc] init];
@try
{
[f noSuchMethod];
}
@catch (NSException *exception)
{
NSLog (@"Обнаружена ошибка с именем %@ и по причине %@.", [exception name], [exception reason]);
}
/*
Метод name считывает имя исключения (ошибки), а метод reason указывает причину ошибки (которую раньше система runtime выводила автоматически).
*/
NSLog (@"Выполнение программы далее продалжается.");
[f release];
[pool drain];
return 0;
}
Как видите, выполнять обработку исключений через try - catch Objective-C значительно просто.
Комментариев нет:
Отправить комментарий