我最近开始学习Objective-C,我正在开发一个iOS应用程序作为练习,无论如何,我想通过抛出异常来处理溢出(我来自Java背景),我搜索了仅有的参考NSException
,但后来我阅读有关异常处理的主题部分,他们说使用NSError
,我阅读了参考,但它们具有相同的协议和方法,那么它们之间有什么区别?哪个更好?
另外,我想创建自己的异常或错误类,是否应该包含任何方法或字段?(就像Exception
在 Java 中实现接口时一样)。谢谢
我最近开始学习Objective-C,我正在开发一个iOS应用程序作为练习,无论如何,我想通过抛出异常来处理溢出(我来自Java背景),我搜索了仅有的参考NSException
,但后来我阅读有关异常处理的主题部分,他们说使用NSError
,我阅读了参考,但它们具有相同的协议和方法,那么它们之间有什么区别?哪个更好?
另外,我想创建自己的异常或错误类,是否应该包含任何方法或字段?(就像Exception
在 Java 中实现接口时一样)。谢谢
NSError
专为非致命的、可恢复的错误而设计。设计为由 an 捕获的问题NSError
通常是用户错误(或者是可以呈现给用户的错误),通常可以从(因此-presentError:
和NSErrorRecoveryAttempting
)中恢复,并且通常是预期或可预测的错误(例如试图打开一个您无权访问的文件,或尝试在不兼容的字符串编码之间进行转换)。
NSException
专为可能致命的程序员错误而设计。这些错误旨在表示您的应用程序中的潜在缺陷,您没有正确检查执行某些操作的先决条件(例如尝试访问超出其边界的数组索引,或尝试改变不可变对象)。Exception Programming Guide的介绍稍微解释了这一点。