Есть ли необработанный обработчик исключений в Java? - PullRequest
18 голосов
/ 26 февраля 2009

Если я правильно помню, в .NET можно зарегистрировать «глобальные» обработчики для необработанных исключений. Мне интересно, есть ли что-то подобное для Java.

Ответы [ 5 ]

27 голосов
/ 26 февраля 2009

Да, есть defaultUncaughtExceptionHandler, но он срабатывает, только если Thread не имеет uncaughtExceptionHandler.

5 голосов
/ 26 февраля 2009
1 голос
/ 26 февраля 2009

Да, в ThreadGroup есть «почти» глобальный такой обработчик. Он не такой глобальный, как тот, о котором вы упомянули, но в принципе вы можете достичь той же функциональности.

Начиная с Java 5, аналогичные функциональные возможности доступны непосредственно в классе потоков .

0 голосов
/ 26 февраля 2009

Часто фреймворки Java, такие как Struts и Spring (и Servlet Spec, IIRC), позволяют вам устанавливать глобальный обработчик исключений. Эти механизмы специфичны для каждой структуры.

0 голосов
/ 26 февраля 2009

Предполагая, что это похоже на catch (...) в C ++, вы должны сделать:

try
{
   // your code here
}
catch(Throwable ex)
{
   // any sort of exception, even if the VM has choked on a peanut
}

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

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