我们使用以下代码引发异常:
[NSException raise:@"ExceptionName" format:@"XYZ"];
当引发异常时,调用堆栈也会登录控制台。我们不想在控制台中记录调用堆栈。如何避免这种情况。
我们使用以下代码引发异常:
[NSException raise:@"ExceptionName" format:@"XYZ"];
当引发异常时,调用堆栈也会登录控制台。我们不想在控制台中记录调用堆栈。如何避免这种情况。
Cocoa 不能很好地与异常混合(惯用的 C++ 是另一回事)。您通常应该将异常视为 Cocoa 中的不可恢复。因此,您应该真正考虑 Cocoa 中另一种(更惯用的)错误处理形式。因此,简短的回答是:“不要抛出/引发异常,除非你不打算恢复”。
还不满意?
您有能力捕获异常并尝试继续:
#import <Foundation/Foundation.h>
static void A() {
[NSException raise:@"ExceptionName" format:@"XYZ"];
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
@try {
A();
}
@catch (NSException * e) {
NSLog(@"e=mc%p", e);
NSLog(@"What I meant to say is: %@", e);
}
}
return 0;
}
此外,框架为您的目的提供了一些高级条目和自定义,如下所述——您可以设置掩码来自定义日志级别,或设置自己的未捕获异常处理程序。