2012-03-16 1 views
1

Есть ли причина, по которой следующие не работают?Objective-c Try/Catch not catching

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

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

// 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"); 
} 

ответ

10

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