Все исключения, которые могут быть вызваны методом JdbcTemplate.execute () - PullRequest
0 голосов
/ 10 июня 2019

Как узнать, какие исключения могут быть вызваны вызовом метода JdbcTemplate.execute().Я знаю, это бросает DataAccessException.Но так как DataAccessException является родительским классом реальных исключений, которые выдают, это становится очень широким утверждением.

Например, он выбрасывает BadSqlGrammarException, который является подклассом.Я знаю, что могу найти его в исходном коде, но я хотел бы знать, есть ли список или какой-нибудь способ найти его, плюс вывод из исходного кода может вызвать проблемы.Причина в том, чтобы перехватывать исключения, чтобы я мог их регистрировать и соответствующим образом уведомлять пользователя.Итак, как я могу узнать, какие исключения выбрасываются, точно?Должен ли я сделать это или поймать DataAccessException и зарегистрировать его сообщение достаточно?

1 Ответ

1 голос
/ 10 июня 2019

Вы можете перехватить родительское исключение и использовать необработанный код или одну из служебных библиотек, чтобы найти причину исключения. Пример необработанного кода ниже, вызванный из блока catch. Первопричина исключения и сообщение всегда должны регистрироваться. Как правило, общий обработчик исключений централизован, чтобы регистрировать исключения только в одном месте (например, в приложениях Spring мы используем @ ControllerAdvice

private static Throwable findSpecificCause(Throwable throwable) {
        Throwable rootCause = getRootCause(throwable);
        return (rootCause != null ? rootCause : throwable);
    }

private static Throwable getRootCause(Throwable throwable) {
        if (throwable == null) {
            return null;
        }
        Throwable rootCause = null;
        Throwable cause = throwable.getCause();
        while (cause != null && cause != rootCause) {
            rootCause = cause;
            cause = cause.getCause();
        }
        return rootCause;
    }

Вы также можете рассмотреть возможность использования таких библиотек, как общие языки Apache ExceptionUtils, Spring NestedExceptionUtils или из Guava

Также см. Ссылку: Исключительная корневая причина

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...