Как обрабатывать непроверенные исключения, выброшенные в стек обработчика нетто - PullRequest
1 голос
/ 11 января 2012

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

Ответы [ 2 ]

3 голосов
/ 11 января 2012

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

0 голосов
/ 25 октября 2013

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

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

...