понедельник, 23 июля 2012 г.

Objective-C. Обработка исключительных ситуаций и ошибок во избежание аварийного завершения программы @try - @catch.

Обработка исключительных ситуаций и ошибок во избежание аварийного завершения программы @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 значительно просто.

Комментариев нет:

Отправить комментарий