如果我的代码中包含异常处理部分,并且可以触发4 sqlException,那么谁将是最好的处理它们的方法,该方法可以最大程度地说明发生了什么情况以及发生在哪里?
我提出了一个穷人解决方案(使用'exceptionDesc')。
有什么好的做法可以处理这种情况? (不创建唯一的类和子类)
try {
exceptionDesc = "prepareStatement";
statement = connection.prepareStatement(sql);
exceptionDesc = "statement.set...";
statement.setDate(1, sqlDate);
exceptionDesc = "executeUpdate";
statement.executeUpdate();
exceptionDesc = "commit";
connection.commit();
}
catch (SQLException sqlEx) {
if (exceptionDesc.equals("prepareStatement")) {
LOG.error ...
} else if (exceptionDesc.equals("executeQuery")) {
LOG.error(" executeQuery ...
...
...
throw new SQLException(sqlEx);
}
最佳答案
什么都不做异常的堆栈跟踪为您做到了:
catch (SQLException e) {
LOG.error("A SQLException happened", e);
throw e;
}
足够了。如果将记录器配置为显示堆栈跟踪(应执行的操作),则将打印堆栈跟踪,并且堆栈跟踪将准确指出哪条方法在哪一行引发了异常。它还会告诉哪个方法调用了导致异常的方法,等等,直到堆栈底部。