这种try 结构表示什么意思
(一般理解try catch (异常捕获)
)
但是下面用的哦是
try finally {()
表示什么意思,如果过程有异常会如哦?
try { conn = DBConnectionManager.getConnection();
ps = conn.prepareStatement(sbSel.toString());
ps.setString(1, bonusId);
rs = ps.executeQuery(); while (rs.next()) {
....... } finally {
DBConnectionManager.closeRS(rs);
DBConnectionManager.closeStmt(ps);
if (inTransaction == false)
DBConnectionManager.freeConnection(conn);
}
(一般理解try catch (异常捕获)
)
但是下面用的哦是
try finally {()
表示什么意思,如果过程有异常会如哦?
try { conn = DBConnectionManager.getConnection();
ps = conn.prepareStatement(sbSel.toString());
ps.setString(1, bonusId);
rs = ps.executeQuery(); while (rs.next()) {
....... } finally {
DBConnectionManager.closeRS(rs);
DBConnectionManager.closeStmt(ps);
if (inTransaction == false)
DBConnectionManager.freeConnection(conn);
}
(巴顿将军) ---感觉是有道理的
如果有异常可以如下定义:
try
catch ()
finally {()
甚至最后面还可以 catch ()
通常在finally语句中是进行资源的清除工作。如关闭打开的文件和通讯句柄,或者数据库链接等。
try{
}catch(Exception e){
}finally{
}
这是java捕捉异常的语法,把你的语句都写在try内,如果这些语句出现了一场会被catch捕捉到,你可以再catch里写异常的处理语句,finally里是最终处理语句,不管你的语句有没有异常,最后都会执行到finally里的语句。
比如说访问数据库,你在try里写读写数据库语句,一旦出现异常就可以再catch里print异常信息,在finally里可以写数据库连接关闭语句,以防止出现异常无法正常关闭数据库连接的情况。
try{}
catch(){}
finally{}
finally可以省略,意思不管是否程序捕获到异常都要执行的代码.
通常在finally语句中是进行资源的清除工作。如关闭打开的文件和通讯句柄,或者数据库链接等。
finally的主要作用是在出现异常后无论怎样都要执行finally里的语句.
你可以看看这个代码:
public static void main(String[] args) {
try{
int i=1/0;
}
catch(Exception e) {
System.out.println("在catch里");
}
finally {
System.out.println("在finally里");
}
}
// 输出结果:
// 在catch里
// 在finally里
而catch只是在发生异常时执行
如果有一个异常我打算抛给上一层处理,其实就是通知调用的方法这个过程有问题,我当然不catch。
但如果这个过程内临时使用了系统资源,你总不能也让上一层帮你释放吧。
所以要用finally来做这个事。
要灵活用运
所以try{}
finally{}
就可以了,不用加catch