pep*_*psi 7 cocoa exception-handling exception objective-c
我一直用于XCode的一个有用提示是在异常上添加断点.
我想知道为什么我们需要添加两个断点 - 一个用于objc_exception_throw,一个用于[NSException raise].
一个人覆盖的情况是另一个没有?
您应该只在 上使用断点objc_exception_throw。该方法-[NSException raise]调用objc_exception_throw,因此objc_exception_throw涵盖了涵盖的所有情况-[NSException raise]。反之则不然:该@throw指令被编译为objc_exception_throw直接调用。此方法显示了差异:
- (void)throwAndCatch
{
@try {
NSException *exception = [[NSException alloc] initWithName:@"Test"
reason:@"test"
userInfo:nil];
@throw exception;
}
@catch (NSException *exception) {
NSLog(@"Caught");
}
}
Run Code Online (Sandbox Code Playgroud)
调用时-throwAndCatch,断点 on-[NSException raise]不起作用,而断点 on 则objc_exception_throw起作用。