Objective-c Try / Catch没有捕获

时间:2012-03-16 23:00:47

标签: objective-c ios try-catch-finally nsexception

以下哪些不起作用有原因吗?

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

try/catch question类似,只是看起来上面的块每次都会崩溃。我知道我的调试器设置正确,因为我从另一个问题设置了一个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 个答案:

答案 0 :(得分:10)

是的,有一个非常简单的原因。即,CFGetTypeID(NULL)不会抛出异常。它崩溃了。你无法捕捉到这样的崩溃。