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