我最近开始学习 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/