异常发生的一般原因是什么?出现异常时,程序是立即终止还是继续运行?
我猜@try是我正在测试的程序消息.是对的吗?
@catch之后要么记录错误信息,要么清理等等,@ final块会做什么?我正在阅读的书中说@finally确定@try中的语句是否会引发异常.但这不是一个不必要的步骤,因为有或没有它,我们可以判断是否存在基于程序突然终止的异常?
什么是投掷指令?这些书说它可以让你抛出自己的异常.但我发现这真的令人困惑.这是否意味着我可以以某种方式创建一个例外并测试它?
如果你能为我回答至少一个问题,我将非常感激.谢谢.
异常提供了一种在正常执行流程之外处理错误和其他异常事件的机制.它们允许程序员通过消除不断检查和处理错误的需要来编写更清晰的代码.相反,当发生错误时,代码可以"抛出"异常对象,并且执行将在该点停止并在可以处理异常的第一个"catch"块处继续.我可以进一步解释,但我相信通过阅读相关的维基百科页面,你会得到更好的例外解释.
因此,考虑到这一点,您提到的指令允许Objective-C中的异常:
@try: try块中的代码可能会抛出异常.try块通常后跟catch块,它可以捕获try块中代码可能引发的任何异常,但是也可能需要在更高级别处理给定的异常.在这种情况下,相关的catch块可能位于更高的某个位置,就像使用try块调用方法的方法或上面的方法一样.(那些方法也会有调用当前方法的try块.)
@catch: Catch块包含用于处理给定异常的代码,并希望从异常情况中恢复.
@finally: finally块包含为try块执行任何所需清理的代码.例如,如果try块分配了一些资源,则finally块可以在允许异常移动到下一个catch处理程序之前释放这些资源.
@throw:这是一个用于"抛出"异常的指令.try块的执行在抛出异常的位置停止,并且catch块将处理(或不处理)异常.(未处理的异常通常会导致程序终止.)
现在,尽管如此,您通常应该避免使用Objective-C中的异常.我知道将这个伟大的功能内置到语言中然后无法使用它似乎很奇怪,但Objective-C程序几乎总是使用Cocoa或Cocoa Touch框架编写,并且这些框架不希望有异常抛出框架调用.
异常发生的一般原因是什么?出现异常时,程序是立即终止还是继续运行?
当发生意外事件而导致代码无法继续时,您会抛出异常.例如,尝试访问仅包含n个项的数组中的第n + 1个元素会引发异常.在Cocoa或Cocoa Touch程序中,例外是终端.但是,在其他语言和框架中,可以处理异常以允许程序继续运行.
@catch之后要么记录错误信息,要么清理等等,@ final块会做什么?
无论是否抛出异常,finally块都会运行,因此您不需要在try块和catch块中都有清理代码.此外,catch块通常会捕获较低级别的异常,因此它们可能无法清理.
什么是投掷指令?这些书说它可以让你抛出自己的异常.
@throw; (在没有参数的情况下)catch块会重新抛出catch块正在处理的异常,以便可以在更高级别处理它.
听起来你可能正在阅读Steven Kochan的Objective-C编程.如果我没记错的话,Kochan试图教你与Cocoa和Cocoa Touch脱离的Objective-C.这可能在某种程度上是有意义的,但这是一个案例,它可能会让你更加困惑,特别是如果你试图学习语言,以便你可以使用这些框架中的一个或两个.鉴于Apple建议不要在代码中使用异常,因此停止阅读并继续下一章可能是安全的.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |