词条 | 异常处理 |
释义 | 名词解释异常处理,英文名为exceptional handling, 是代替日渐衰落的error code方法的新法,提供error code 所未能具体的优势。异常处理分离了接收和处理错误代码。这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解。 异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。 异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。 异常可以由公共语言运行库 (CLR)、第三方库或使用 throw 关键字的应用程序代码生成。 异常具有以下特点1.在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。 2.发生异常时,控制流立即跳转到关联的异常处理程序(如果存在)。 3.如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误信息。 4.可能导致异常的操作通过 try 关键字来执行。 5.异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。 6.程序可以使用 throw 关键字显式地引发异常。 7.异常对象包含有关错误的详细信息,其中包括调用堆栈的状态以及有关错误的文本说明。 8.即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。 异常处理理论上有两种基本模型一种称为"终止模型"(它是Java与C++所支持的模型).在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行.一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行. 另一种称为"恢复模型".意思是异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为的二次能成功. 对于恢复模型,通常希望异常被处理之后能继续执行程序.在这种情况下,抛出异常更像是对方法的调用--可以在Java里用这种方法进行配置,以得到类似恢复的行为.(也就是说,不是抛出异常,而是调用方法修正错误.)或者,把try块放在while循环里,这样就可以不断的进入try块,直到得到满意的结果. 虽然恢复模型开始显得很吸引人,并且人们使用的操作系统也支持恢复模型的异常处理,但程序员们最终还是转向了使用类似"终止模型"的代码.因为:处理程序必须关注异常抛出的地点,这势必要包含依赖于抛出位置的非通用性代码.这增加了代码编写和维护的困难,对于异常可能会从许多地方抛出的大型程序来说,更是如此. 下面我写的一个简单的例子 VC++6.0下通过 #include <iostream> using namespace std; class Error { public: virtual void show()=0; }; class DenoError:public Error { public: void show() { cout<<"分母不可以为0!"<<endl; } }; void main() { int a,b; cin>>a>>b; try { DenoError e; if(b==0) throw e; int c=a/b; cout<<c<<endl; } catch(DenoError & e) { e.show(); } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。