考虑以下 Cocoa/Obj-C 代码片段:
MyClass *obj;
@try {
[obj doSomething];
}
@catch (NSException * e) {
NSLog(@"Exception occurred: %@", [e description]);
}
@finally {
[obj cleanUp];
}
和
MyClass *obj;
@try {
[obj doSomething];
}
@catch (NSException * e) {
NSLog(@"Exception occurred: %@", [e description]);
}
[obj cleanUp];
在什么情况下第一个片段会被[obj cleanUp]
调用,而第二个片段不会[obj cleanUp]
被调用?换句话说,在什么情况下@finally
使用 Cocoa 异常处理是非冗余的?