Что происходит внутри блока try? - PullRequest
1 голос
/ 10 июня 2010

Пример:

@try {
    // 1) do bad stuff that can throw an exception...

    // 2) do some more stuff

    // 3) ...and more...
}
@catch (NSException *e) {
    NSLog(@"Error: %@: %@", [e name], [e reason]);
}

Если 1) выдает исключение, блок немедленно отменяется как возврат в функцию или разрыв в цикле? Или 2) и 3) будут обработаны независимо от того, что происходит в 1)?

1 Ответ

4 голосов
/ 10 июня 2010

Если возникает исключение, выполнение вашего блока немедленно прерывается, и выполняется секция @catch (если она обрабатывает соответствующий тип исключения).

Пример кода:

@try {
    NSArray* arr = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
    NSLog([arr objectAtIndex: 0]);
    NSLog([arr objectAtIndex: 5]);
    NSLog(@"Lala");
}
@catch (NSException * e) {
    NSLog(@"%@, %@", [e name], [e reason]);
}

Output:
1
NSRangeException, *** -[NSCFArray objectAtIndex:]: index (5) beyond bounds (3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...