以下是关于java的try--catch的方法,看着不大明白,求解释

//保存邮件信息
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会不会执行到,程序应该是按顺序执行的,但这里不清楚它的流程!谢谢!!

慕少森
浏览 172回答 2
2回答

德玛西亚99

要明确以下几点:1.finally中的程序段是肯定会执行的2.return 也会执行的3.在JVM中是按照顺序执行的4.try catch 只是一种语法形式所以:在执行到return时,先执行finally,再执行return.

长风秋雁

在执行完 try 中的语句,并在 catch的所有错误处理发生之后,可无条件执行 finallyStatements 中的语句。请注意,即使 try 或 catch 块中出现返回语句,或 catch 块中引发错误,都会执行 finallyStatements 中的代码。finallyStatments 一定会始终运行。
打开App,查看更多内容
随时随地看视频慕课网APP