Objective-C Try / Catch не ловит - PullRequest
1 голос
/ 17 марта 2012

Есть ли причина, по которой следующее не будет работать?

@try {
    CFGetTypeID( NULL );
}
@catch (NSException * e) {
    NSLog(@"Exception: %@", e);
}
@finally {
    NSLog(@"finally");
}

Похоже на try / catch вопрос , только кажется, что вышеупомянутый блок вылетает каждый раз.Я знаю, что мой отладчик настроен правильно, так как я настроил попытку / уловку выше из другого вопроса:

// Test working try catch
NSString* test = [NSString stringWithString:@"ss"];

@try {
    [test characterAtIndex:6];
}
@catch (NSException * e) {
    NSLog(@"Exception: %@", e);
}
@finally {
    NSLog(@"finally");
}

// Now test NULL entry
@try {
    CFGetTypeID( NULL );
}
@catch (NSException * e) {
    NSLog(@"Exception: %@", e);
}
@finally {
    NSLog(@"finally");
}

1 Ответ

10 голосов
/ 17 марта 2012

Да, есть очень простая причина.А именно, CFGetTypeID(NULL) не создает исключение.Это сбой.Вы не можете поймать сбои, как это.

...