如何解决这个问题以停止警告信息?我试图在标签上加上错误。try catch 真的能防止应用程序崩溃吗?
@catch (NSException *ex) {
errorLbl.text =ex;
}
如何解决这个问题以停止警告信息?我试图在标签上加上错误。try catch 真的能防止应用程序崩溃吗?
@catch (NSException *ex) {
errorLbl.text =ex;
}
您应该确保代码不会完全崩溃,而不是试图捕捉崩溃。但是,您始终可以NSException
将NSString
@catch (NSException *ex) {
errorLbl.text = [NSString stringWithFormat:@"%@",[ex reason]];
}
NSException
@interface NSException : NSObject <NSCopying, NSCoding> {
@private
NSString *name;
NSString *reason;
NSDictionary *userInfo;
id reserved;
}
这个问题很难理解,但如果你问,Catch 是否会捕获每个基于 NSException 的异常,那么答案是肯定的,只是有一个小问题。
您可以捕获它,但由于您没有对此做任何事情,因此代码将在捕获后继续。如果你的应用程序崩溃了,那么你会用错误填充一些标签,但这并不意味着应用程序处于稳定的位置,它可能只是继续崩溃。
NSExceptionreason
包含您可以显示的“人类可读”原因,例如:
@catch (NSException *ex) {
errorLbl.text = ex.reason;
}
有关更多信息,请参阅NSException 参考。
值得注意的是,Objective-C 中的异常(与其他语言不同)旨在用于编程或意外的运行时错误,而不是正常的程序流程。 文档状态:
重要提示:您应该将异常用于编程或意外的运行时错误,例如越界集合访问、尝试改变不可变对象、发送无效消息以及失去与窗口服务器的连接。您通常在创建应用程序时而不是在运行时处理这些类型的异常错误。
...
代替异常,错误对象(NSError)和 Cocoa 错误传递机制是在 Cocoa 应用程序中传达预期错误的推荐方式。有关详细信息,请参阅错误处理编程指南。
请参阅错误处理编程指南。