2 zhefutianxia zhefutianxia 于 2014.08.07 22:17 提问

不是很明确java中的trycatch中,finally()的作用

请大家看一下我下面的代码:
public class trycatch {
public static void main(String args[])
{
try{
System.out.println(2/0);
System.out.println("检查是否有异常");
}

catch(ArithmeticException e )
{
System.out.println("系统正在维护,请与管理员联系");
e.printStackTrace();

}
finally
{
    System.out.println("必须执行的语句,不管你是否异常");
}
System.out.println("我主要是想看一下他会不会执行,为什么上面有异常他还是执行了这条语句呢,感觉finally没有用似得");

}
}

//上面这个程序显然是抛出了异常的,但是为什么不在finally()之内的语句也执行了呢??
感觉有没有finally,之后还不是一样执行么?
我是一个初学者,不是很理解finally的作用,恳请各位大神指教,小弟在此谢谢大家啦

2个回答

xuan_1002xuan
xuan_1002xuan   2014.08.08 00:56

不管是否抛出异常finally内的代码都必须执行。例如,jdbc操作时,一般都在finally内执行关闭资源的操作(查询时不用关闭资源,不然会出问题)。

zhefutianxia
zhefutianxia 嗯嗯,谢谢哈
大约 3 年之前 回复
little623
little623   2014.08.08 09:56

Java的异常处理机制是这样的 try{}是监控的代码,catch{}是处理异常,finally{}是无论是否发生异常,无论异常是否处理都会执行的代码。而finally后面的代码是否执行的关键就是是否有catch语句。catch就是处理异常,就相当于把异常当作正常程序处理了,所以finally后面的代码会正常执行。如果没有catch语句,发生异常后jvm执行完finally代码之后就会将异常抛出,这样的话finally后面的代码就不会执行了。

zhefutianxia
zhefutianxia 谢谢哈,没想到还真的有人回答
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片