【发布时间】:2015-03-28 09:32:33
【问题描述】:
我有一个名为 ProblemServlet 的 Servlet。我有一个名为ProblemTable 的数据库类。现在,下面是来自 ProblemTable 类的单个方法。
package DB;
import Controller.Common;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ProblemsTable extends DBMaster
{
public void deleteProblem(int idProblem)
{
checkConnection();
PreparedStatement ps = null;
String result="";
try
{
con.setAutoCommit(false);
String sql = "DELETE FROM Problem WHERE idProblem=?";
ps = con.prepareStatement(sql);
ps.setInt(1,idProblem);
int i = ps.executeUpdate();
con.commit();
if(i>0)
{
result="Deleted Succesfully";
}
else
{
result="Delete Failed";
}
}
catch(SQLException e)
{
e.printStackTrace();
result = "Delete Failed. Rolled back";
try {
con.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
result = "Delete failed. Rollback failed";
}
}
}
}
如您所见,我在这个类中捕获了异常。但是我想在ProblemServlet 中捕获这些异常,因为我可以将错误显示为alert()
现在我的问题是这样的。
如果我抛出异常,那么我将无法调用con.rollback() 或ps.close,因为servlet 无权访问ps 或con,也无法授予访问权限。
我怎样才能抛出异常,同时处理这些问题?
【问题讨论】:
-
是的,您可以从这里抛出自定义异常并从 servlet 处理。
标签: java exception servlets jdbc