\"异常\"指的是程序运行时出现的非正常情况。在用传统的语言编程时,程序员只能通过函数的返回值来发出错误信息。这易于导致很多错误,因为在很多情况下需要知道错误产生的内部细节。通常,用全局变量errno来存储\"异常\"的类型。这容易导致误用,因为一个errno的值有可能在被处理?reg;前被另外的错误覆盖掉。即使最优美的C语言程序,为了处理\"异常\"情况,也常求助于goto语句。Java对\"异常\"的处理是面向对象的。一个Java的Exception是一个描述\"异常\"情况的对象。当出现\"异常\"情况时,一个Exception对象就产生了,并放到产生这个\"异常\"的成员函数里。
基础
Java的\"异常\"处理是通过5个关键词来实现的:try,catch,throw,throws和finally。用try来执行一段程序,如果出现\"异常\",系统抛出(throws?copy;一个\"异常\",你可以通过它的类型来捕捉(catch?copy;它,或最后(finally?copy;由缺省处理器来处理。下面是\"异常\"处理程序的基本形式:try{//程序块}catch(ExceptionType1e){//对ExceptionType1的处理}catch(ExceptionType2e){//对ExceptionType2的处理throw(e);//再抛出这个\"异常\"}finally{}
\"异常\"的类型
在\"异常\"类层次的最上层有一个单独的类叫做Throwable。这个类用来表示所有的\"异常\"情况。每个\"异常\"类型都是Throwable的子类。Throwable有两个直接的子类。一类是Exception,是用户程序能够捕捉到的\"异常\"情况。我们将通过产生它的子类来创建自己的\"异常\"。另一类是Error,它定义了那?copy;通常无法捕捉到的\"异常\"。要谨慎使用Error子类,因为它们通常会导致灾难性的失败。在Exception中有一个子类RuntimeException,它是程序运行时自动地对某?copy;错误作出反应而产生的。
不捕捉\"异常\"
\"异常\"对象是Java在运行时对某?copy;\"异常\"情况作出反应而产生的。例如,下面这个小程序包含一个整数被0除的\"异常\"。
classExc0{publicstaticvoidmain(Stringargs[]){intd=0;inta=42/d;}}
当Java执行这个除法时,由于分母是0,就会构造一个\"异常\"对象来使程序停下来并处理这个错误情况,在运行时\"抛出\"(throw?copy;这个\"异常\"。说\"抛出\"是因为它象一个滚烫的马铃薯,你必须把它抓住并立即处理。程序流将会在除号操作符处被打断,然后检查当前的调用堆栈来查找\"异常\"。一个\"异常\"处理器是用来立即处理\"异常\"情况的。在这个例子里,我们没有编一个\"异常\"处理器,所以缺省的处理器就发挥作用了。缺省的处理器打印Exception的字符?reg;值和发生\"异常\"的地点。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |