如果我的代码中包含异常处理部分,并且可以触发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;
}


足够了。如果将记录器配置为显示堆栈跟踪(应执行的操作),则将打印堆栈跟踪,并且堆栈跟踪将准确指出哪条方法在哪一行引发了异常。它还会告诉哪个方法调用了导致异常的方法,等等,直到堆栈底部。

10-08 18:03