objective-c - NSException 和 NSError 自定义异常/错误

标签 objective-c exception nserror nsexception

我最近开始学习 Objective-C,我正在做一个 iOS 应用程序作为练习,无论如何,我想通过抛出异常来处理溢出(我来自 Java 背景),我搜索了引用资料只有 NSException,但后来我读到有关异常处理的主题部分,他们说要使用 NSError,我阅读了引用资料,但他们有相同的协议(protocol)和方法,所以他们之间有什么区别?哪个更好?

此外,我想创建自己的异常或错误类,是否有任何我应该包含的方法或字段? (就像在 Java 中实现 Exception 接口(interface)一样)。 谢谢

最佳答案

NSError 是为非致命的、可恢复的错误而设计的。设计为由 NSError 捕获的问题通常是用户错误(或者是可以呈现给用户的错误),通常可以从中恢复(因此为 -presentError:NSErrorRecoveryAttempting ),并且通常是预期或可预测的错误(例如尝试打开您无权访问的文件,或尝试在不兼容的字符串编码之间进行转换)。

NSException 是为潜在的致命程序员错误而设计的。这些错误旨在表示您的应用程序中存在潜在缺陷,您没有正确检查执行某些操作的先决条件(例如尝试访问超出其范围的数组索引,或尝试改变不可变对象(immutable对象))。 Exception Programming Guide 的介绍稍微解释了这一点。

关于objective-c - NSException 和 NSError 自定义异常/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100951/

相关文章:

objective-c - 使用宏方法调用三进制的编译器错误

objective-c - 保留 iOS setter 方法中的发布惯例

ios - iOS 应用程序平均在后台运行多长时间,直到它被杀死?

java - Java-ArrayOutOfBoundsException帮助我

objective-c - 保留 kPasteboardTypeFileURLPromise 时的错误处理

ios - 类型 'Error' 的值没有成员 'code'

ios - Swift 3 转换错误/NSError

Iphone XML文件解析偏好,但什么是Big什么是Small?

c# - 强制接口(interface)实现检查异常

MySQL JDBC语法错误异常