看来楼主对异常机制,还不太清楚,我稍加说明
你编译不通过的原因是:
因为catch(Exception)会捕捉一切异常,包括NumberFormatExceptio 类型转换异常,当
这个catch扑捉到异常后,除了执行finally{}中的代码块后,其他代码不会执行,也就是第二个catch(NumberFormatException e)
永远不会得到执行,这样编译不会通过
所以以后写catch()时,范围小的写在上面。这样上面的catch捕捉不到,可以向下继续寻找。
最后写finlly{}
finlly{}是必须执行的代码块,一般用于释放资源,包括关闭数据库了,等等吧
class ExceptionTest2{
public static void main(String[] args){
int a=0;
try{
a = Integer.parseInt(args[0]);
}
catch(NumberFormatException e){
a = 2;
}
catch(Exception e){
a = 1;
}
finally{
//必须执行的代码
}
}
} |