//保存邮件信息public boolean saveEmail(EmailDTO emailDTO,Connection conn){String preSql = "insert into emailinfo values(?,?,?,?,?)";PreparedStatement pstmt = null;try{pstmt = conn.prepareStatement(preSql);pstmt.setString(1, emailDTO.getMailDate());pstmt.setString(2, emailDTO.getFromList());pstmt.setString(3, emailDTO.getTitle());pstmt.setString(4, emailDTO.getContent());if (emailDTO.getAttFilePath() != null) {pstmt.setString(5, emailDTO.getAttFilePath());}else {pstmt.setString(5, "");}pstmt.setString(6, emailDTO.getUserID());int flag = pstmt.executeUpdate();if (flag == 1){return true;}}catch(SQLException e){e.printStackTrace();}finally{close(pstmt,null);}return false;}按照书上所说,finally中的程序段是肯定会执行的,但是在try的大括号中有句return true,不明白的是,如果return true已经执行了,finally会不会执行到,程序应该是按顺序执行的,但这里不清楚它的流程!谢谢!!
2 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
要明确以下几点:
1.finally中的程序段是肯定会执行的
2.return 也会执行的
3.在JVM中是按照顺序执行的
4.try catch 只是一种语法形式
所以:在执行到return时,先执行finally,再执行return.
长风秋雁
TA贡献1757条经验 获得超7个赞
在执行完 try 中的语句,并在 catch的所有错误处理发生之后,可无条件执行 finallyStatements 中的语句。
请注意,即使 try 或 catch 块中出现返回语句,或 catch 块中引发错误,都会执行 finallyStatements 中的代码。finallyStatments 一定会始终运行。
添加回答
举报
0/150
提交
取消