繁体   English   中英

目标c中的错误处理与异常处理

[英]error handling vs exception handling in objective c

我无法理解应该使用错误处理或异常处理的地方。 我假设是这样,如果它是现有的框架类,则存在委托方法,这些方法将有助于程序员发送错误对象引用并在此之后处理错误。 异常处理是针对使用某些框架类的程序员的操作抛出错误,而我无法修复错误对象的引用的情况。

这个假设有效吗? 还是我应该如何理解它们?

如果程序员检查了引发异常的方法的参数,则应该将异常用于不会出现的错误。 例如,除以0或从NSArrays获得的众所周知的“越界”例外。

NSErrors是程序员无法执行的错误。 例如,解析plist文件。 如果程序在尝试读取其内容之前检查文件是否为有效的plist,则将浪费资源。 为了进行有效性检查,程序必须解析整个文件。 解析一个文件以报告它是有效的,因此您可以再次对其进行解析将是完全的浪费。 因此,如果无法解析文件,则该方法将返回NSError(或者只是nil,它告诉您出现了问题)。

有效性分析是“程序员应该检查过的参数”部分。 它不适用于此类错误,因此您不会抛出异常。


从理论上讲,您可以使用return nil替换超出范围的异常。 但这将导致非常糟糕的编程。


苹果说:

重要说明 :在许多环境中,使用异常相当普遍。 例如,您可能会引发异常,以表明例程无法正常执行(例如,缺少文件或无法正确解析数据时)。 在Objective-C中,异常会占用大量资源。 您不应将异常用于一般的流控制,或仅用于表示错误。 相反,您应该使用方法或函数的返回值来指示已发生错误,并在错误对象中提供有关问题的信息。

我认为您对错误的假设绝对正确,为此框架提供了一组方法(UIWebView错误处理),但是您对Exception的假设部分正确,因为只有在我们做错了但框架不允许的情况下才会发生异常并可以修复。 (例如,从超出其限制的数组访问成员)。 并会导致应用程序崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM