Глобальный журнал Catch Exception e - PullRequest
10 голосов
/ 12 мая 2010

Предположим, что у меня есть устаревшее Java-приложение с тысячами строк кода, которые делают:

try {
   // stuff 
} catch (Exception e) {
   // eat the exception
}

Есть ли глобальная опция, которую я мог бы перевернуть или сторонний JAR, который бы регистрировал все "съеденные" исключения? Я знаю, что мог бы сделать массивную замену поиска (поиск catch (Exception e) {и заменить его catch (Exception e) {logException (e);), но мне было интересно, есть ли лучшее решение. Спасибо!

Ответы [ 4 ]

7 голосов
/ 12 мая 2010

Возможно, вы могли бы предоставить собственную реализацию Exception, которая регистрирует трассировку стека в конструкторе. Со страницы руководства по java:

-Xbootclasspath: * 1006 загрузочного пути к классам *
Укажите разделенный двоеточиями список каталогов, архивов JAR, и ZIP архивы для поиска файлов загрузочных классов. Это используется вместо файлов загрузочных классов, включенных в Java 2 SDK.

5 голосов
/ 12 мая 2010

Похоже, место, где Аспектно-ориентированное программирование может пригодиться. Вы можете настроить pointcut обработчика исключений. Проверьте AspectJ для хорошей реализации AOP.

0 голосов
/ 12 мая 2010

Это позволит вам обрабатывать любые необъяснимые исключения:

Thread.setDefaultUncaughtExceptionHandler(
  new Thread.UncaughtExceptionHandler(){
    public void uncaughtException(Thread t, Throwable e) {
      //handle the exception
    }
});
0 голосов
/ 12 мая 2010

Нет. Если код перехватывает исключение и ничего с ним не делает, то вы ничего не можете сделать, чтобы изменить это без изменения кода.

Найти-заменить должно работать. Тем не менее, я также настоятельно рекомендую проверить его с помощью FindBugs , чтобы убедиться, что вы нашли все случаи этой проблемы. (FindBugs должен быть частью вашего процесса в любом случае, но я просто указываю на это на тот случай, если кто-то, кто читает это, уже не использует его.)

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