首页 理论教育 异常处理的重要性及区别

异常处理的重要性及区别

时间:2023-10-25 理论教育 版权反馈
【摘要】:异常处理功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理通常是为了防止未知错误产生所采取的处理措施。异常被抛出后,说明产生的错误已经无法挽回。多数操作系统是支持恢复模型的异常处理的。因为对于“恢复模型”而言,程序必须关注异常抛出的地点,这会导致无法包含或编写依赖于抛出位置的非通用性代码,从而增加代码编写和维护的难度。异常处理和信号处理是不同的概念。

异常处理的重要性及区别

异常处理(Exceptional Handling),又称为错误处理。异常处理分离了接收和处理错误代码,这样既帮助程序员理清了思绪,又增强了代码的可读性,便于维护者的阅读和理解。

异常处理功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用try、catch和finally等关键字来尝试可能未成功的操作、处理失败以及在事后清理资源。

异常处理通常是为了防止未知错误产生所采取的处理措施。异常处理使程序员不必绞尽脑汁地去考虑各种错误,为处理多种错误提供了有效的方法,使编程效率大大提高。

C++语言中,异常通常由throw关键字的应用程序代码抛出。

异常处理通常有两种理论模型一种称为“终止模型”(Java与C++所支持的模型)。在这种模型中,所有错误被假设是非常关键的,错误发生时,程序通常无法返回到异常发生之处继续执行。异常被抛出后,说明产生的错误已经无法挽回。另一种是“恢复模型”。异常处理的功能是修正程序产生的错误,并重新尝试调出问题的方法(或函数),且假定二次调用会成功。(www.xing528.com)

对于“恢复模型”,通常异常处理完毕之后能继续执行程序。抛出异常更像是对方法(或函数)的调用。如果把try块放在while循环中,那么就可以不断地进入try块,直到截获可能的异常发生或者获得程序员满意的结果。

由以上描述可知,“恢复模型”更能吸引广大程序员。多数操作系统是支持恢复模型的异常处理的。但是完美的处理不一定是最佳选择,多数程序员更喜欢“终止模型”。因为对于“恢复模型”而言,程序必须关注异常抛出的地点,这会导致无法包含或编写依赖于抛出位置的非通用性代码,从而增加代码编写和维护的难度。

上述对异常的描述可归结为最简单的一句话:异常会使对某个函数的调用动作中止,而该函数正是异常发生之处。异常处理机制有能力将某个对象作为参数,回传给函数调用者,但并不是使用“回调函数”(回调函数属于信号处理机制范畴)。异常处理和信号处理是不同的概念。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈