2023年11月29日发(作者:)

JAVA异常机制介绍如何正确的进⾏JAVA异常处理

1. 课前练习

在阅读本⽂的内容之前,请从下⾯这段代码中找出异常处理有哪些不正确的地⽅。如果不能找出⾄少两处错误,说明你还是⼀个“菜鸟”,

对JAVA的异常处理机制还不够了解,需要仔细阅读本⽂的内容,并⾛查⼀下⾃⼰编写的代码。如果你可以找出⾄少两处错误,恭喜你,你

已经是⼀个熟悉JVAVA异常编码的⽼⼿了,如果有兴趣的话,请耐⼼阅读完本⽂,⼀起讨论⼀下JAVA异常处理的原则。

1 OutputStreamWriter out = ...

2 tion conn = ...

3 try {

第三类是⼀般的checkedException,这也是在编程中使⽤最多的Exception,所有继承⾃Exception并且不是RuntimeException的异常都

是checked Exception,如图1中的IOException和ClassNotFoundException。JAVA 语⾔规定必须对checked Exception作处理,编

译器会对此作检查,要么在⽅法体中声明抛出checked Exception,要么使⽤catch语句捕获checked Exception进⾏处理,不然不能通过

编译。checked Exception⽤于以下的语义环境:

(1)处理异常,进⾏修复以让程序继续执⾏。例如在进⾏数据库查询时,数据库连接断链后重建链接成功。

(2)在对异常进⾏分析后发现这⾥不能处理它,那么重新抛出异常,让调⽤者处理。异常依次向上抛出,如果所有⽅法都不能恰当地处理

异常,最终会在⽤户界⾯以恰当的⽅式提⽰⽤户,由⽤户来判断下⼀步处理措施。例如在进⾏数据库查询时,断链后重试⼏次依然失败的情

method2(); //method1抛出ExceptionB

method3(); //method1抛出ExceptionC

}

catch(ExceptionA e)

……

}

finally

{

{

();

}

……

throw new MyException(“发⽣了数据库异常:”+sage);

……//对异常进⾏处理

n(e);//打印异常信息

……

}

假如在过⼀段时间后来看这段代码,你能弄明⽩是什么意思吗?混合使⽤JAVA异常处理机制和返回值使程序的异常处理部分变得“丑陋不

堪”,并难以理解。如果有多种不同的异常情况,就定义多种不同的异常,⽽不要像上⾯代码那样综合使⽤Exception和返回值。

修改后的正确代码如下:

try

……