问题描述
- 不是很明确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的作用,恳请各位大神指教,小弟在此谢谢大家啦
解决方案
不管是否抛出异常finally内的代码都必须执行。例如,jdbc操作时,一般都在finally内执行关闭资源的操作(查询时不用关闭资源,不然会出问题)。
解决方案二:
Java的异常处理机制是这样的 try{}是监控的代码,catch{}是处理异常,finally{}是无论是否发生异常,无论异常是否处理都会执行的代码。而finally后面的代码是否执行的关键就是是否有catch语句。catch就是处理异常,就相当于把异常当作正常程序处理了,所以finally后面的代码会正常执行。如果没有catch语句,发生异常后jvm执行完finally代码之后就会将异常抛出,这样的话finally后面的代码就不会执行了。
时间: 2024-12-09 14:03:08