Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c objective c异常对什么有用?_Objective C_Exception_Exception Handling - Fatal编程技术网

Objective c objective c异常对什么有用?

Objective c objective c异常对什么有用?,objective-c,exception,exception-handling,Objective C,Exception,Exception Handling,我读过很多关于Objective-C异常的文章,但我不知道它们有什么用处。 当错误可恢复时(由于许多泄漏相关问题),不鼓励使用它们。这是这样的:无论您在哪里使用exit(0)(或类似的构造),都可以使用它们。这句话还写道:只要你不希望它们被“捕获”,就使用它们 是我遗漏了什么,还是它们只是一个需要完全避免的功能?这是来自苹果的Objective-C编程语言电子书: 重要提示:在许多环境中,异常的使用是相当困难的 常见。例如,您可能会抛出一个异常来表示 例程无法正常执行,例如当文件丢失或丢失时 无

我读过很多关于Objective-C异常的文章,但我不知道它们有什么用处。 当错误可恢复时(由于许多泄漏相关问题),不鼓励使用它们。这是这样的:无论您在哪里使用exit(0)(或类似的构造),都可以使用它们。这句话还写道:只要你不希望它们被“捕获”,就使用它们

是我遗漏了什么,还是它们只是一个需要完全避免的功能?

这是来自苹果的Objective-C编程语言电子书:

重要提示:在许多环境中,异常的使用是相当困难的 常见。例如,您可能会抛出一个异常来表示 例程无法正常执行,例如当文件丢失或丢失时 无法正确分析数据。异常是资源密集型的 在Objective-C中,不应将异常用于一般流程- 控件,或者只是表示错误。相反,您应该使用 方法或函数的返回值,用于指示已发生错误 发生,并在错误中提供有关问题的信息 有关更多信息,请参阅。”(苹果公司的Objective-C编程语言,第10章,例外 处理)

据我所知,来自某些其他语言(Java?)的程序员习惯于使用exception/try/catch处理程序来乱丢代码,以此作为流控制的手段。在objective-C中,这被认为是非常糟糕的做法,因为您的代码将受到严重的性能影响。苹果公司建议从发货代码中删除任何异常处理代码。任何可能导致异常的情况都将是导致崩溃条件的程序员错误,而不是用户错误。NSError对象用于运行时错误处理

因此,异常的唯一用途似乎是作为调试辅助。但我已经看到来自其他特定环境的程序员在这方面给出了太多不好的建议——所以我认为是的,最好完全避免

另请参见苹果的,以及:

Cocoa框架通常不是例外安全的。一般的模式是,异常只保留给程序员错误,捕获这种异常的程序应该很快退出


什么内存问题,要不要共享一个链接?我知道为什么不使用异常的所有原因,但无论如何,谢谢你花时间指出它们。我仍在寻找使用它们的理由,但它似乎不存在(除了调试辅助,对于这样一个复杂的特性,IMHO是一个非常薄弱的理由)。我想知道为什么苹果公司的人不干脆反对他们。