Objective-C Try/Catch не ловит

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

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

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

// 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 ответ

Решение

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

Другие вопросы по тегам