0

如何解决这个问题以停止警告信息?我试图在标签上加上错误。try catch 真的能防止应用程序崩溃吗?

@catch (NSException *ex) {
    errorLbl.text =ex;
}
4

3 回答 3

2

您应该确保代码不会完全崩溃,而不是试图捕捉崩溃。但是,您始终可以NSExceptionNSString

@catch (NSException *ex) {
    errorLbl.text = [NSString stringWithFormat:@"%@",[ex reason]];
}

NSException

@interface NSException : NSObject <NSCopying, NSCoding> {
    @private
    NSString        *name;
    NSString        *reason;
    NSDictionary    *userInfo;
    id               reserved;
}
于 2012-05-04T19:04:51.663 回答
1

这个问题很难理解,但如果你问,Catch 是否会捕获每个基于 NSException 的异常,那么答案是肯定的,只是有一个小问题。

您可以捕获它,但由于您没有对此做任何事情,因此代码将在捕获后继续。如果你的应用程序崩溃了,那么你会用错误填充一些标签,但这并不意味着应用程序处于稳定的位置,它可能只是继续崩溃。

于 2012-05-04T19:03:12.247 回答
0

NSExceptionreason包含您可以显示的“人类可读”原因,例如:

@catch (NSException *ex) {
    errorLbl.text = ex.reason;
}

有关更多信息,请参阅NSException 参考

值得注意的是,Objective-C 中的异常(与其他语言不同)旨在用于编程或意外的运行时错误,而不是正常的程序流程。 文档状态:

重要提示:您应该将异常用于编程或意外的运行时错误,例如越界集合访问、尝试改变不可变对象、发送无效消息以及失去与窗口服务器的连接。您通常在创建应用程序时而不是在运行时处理这些类型的异常错误。

...

代替异常,错误对象(NSError)和 Cocoa 错误传递机制是在 Cocoa 应用程序中传达预期错误的推荐方式。有关详细信息,请参阅错误处理编程指南。

请参阅错误处理编程指南

于 2012-05-05T00:44:22.893 回答