13

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

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

4

1 回答 1

23

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

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

于 2012-06-19T12:49:14.643 回答