假设有如下两种代码段
java.sql.Connection con = DriverManager.getConnection("省略");//取得数据库连接
代码段一:
try{
......
}catch(SQLException e){
e.printStackTrace();
}finally{
con.close();//关闭数据库连接
}代码段二
try{
......
}catch(SQLException e){
e.printStackTrace();
}
con.close();//关闭数据库连接
我的问题如下:
1,上面两不同的代码段就是一个有finally,一个没有finally,试问在try中发生SQLException异常后,代码段二的数据库连接是否会关闭?为什么?2,当try中发生异常后,并且找到catch处理块,当catch处理块中的代码执行完后,然后程序会继续执行catch后面的代码吗?
java.sql.Connection con = DriverManager.getConnection("省略");//取得数据库连接
代码段一:
try{
......
}catch(SQLException e){
e.printStackTrace();
}finally{
con.close();//关闭数据库连接
}代码段二
try{
......
}catch(SQLException e){
e.printStackTrace();
}
con.close();//关闭数据库连接
我的问题如下:
1,上面两不同的代码段就是一个有finally,一个没有finally,试问在try中发生SQLException异常后,代码段二的数据库连接是否会关闭?为什么?2,当try中发生异常后,并且找到catch处理块,当catch处理块中的代码执行完后,然后程序会继续执行catch后面的代码吗?
如输入除数为0,那么怎么让他返回继续执行发生异常的下一个语句啊????
同理,只有代码一CATHCH语句后在的语句一定会执行,而代码二后面的语句只有在执行状态下,会得到执行!
//A
}
catch(){
//B
}
finally{
//C //一定会执行
}
//D //如果C里面有异常或者有return, D不会执行; 否则D会执行