2012-01-11 3 views
1

Так как любое исключение, заброшенное в стеке обработчика нетто, генерирует восходящее событие и в конечном итоге вызывает exceptionCaught в обработчике, исключения не будут доставлены обработчику uncaught-exception. Даже повторное удаление этого исключения в методе exceptionCaught не помогает (потому что netty обрабатывает его снова). Я хотел бы бросить (некоторые или все) исключенные исключения из метода exceptionCaught. Есть какой-либо способ сделать это?Как обрабатывать непроверенные исключения, брошенные в стеки обработчиков нетто

ответ

2

Нет, нет способа сделать это. Единственное, что вы можете сделать, это обработать Exception в ExceptionCaught. Почему это проблема для вас?

+1

Это проблема, так как мой UncaughtExceptionHandler не будет вызван. Поскольку UncaughtExceptionHandler является общим для разных слоев в моем приложении, я не хочу реплицировать этот код в exceptionCaught. Я предполагаю, что я бы ввел экземпляр UncaughtExceptionHandler в свой netty_handler и вывел метод явно. Хотя это будет хорошо, если есть какой-либо крючок в exceptionCaught для распространения исключения. Спасибо за ваш вклад. –

0

Я должен согласиться с Норман, у меня была аналогичная проблема. Я создал метод exceptionCaught() и в нем называл мою процедуру обработки исключений. Проблема, с которой я столкнулся, заключалась в том, что моя процедура обработки исключений пыталась выполнить очистку и вызывать другие методы Netty, но это привело к зависанию Netty.

Моим решением было создать новую тему изнутри exceptionCaught(), которая вызывает мою процедуру обработки исключений и простой возврат из exceptionCaught(). Это позволяет обработать исключение Netty для завершения и возобновления нормальной работы Netty. Вам нужно поставить 1-секундную задержку в свой новый поток, прежде чем вызывать любые другие функции Netty. Это гарантирует, что обработка исключений netty выполняется до того, как мой новый поток начнет очистку и вызовет другие функции netty. Это кажется немного чрезмерной работой, но она работает и позволяет избежать условий гонки.

Смежные вопросы