Как справиться с неконтролируемыми исключениями, брошенными в стеке обработчиков Netty
-
27-10-2019 - |
Вопрос
Поскольку любое исключение, добавленное в стеке Netty Handler, будет генерировать вверх по течению события и в конечном итоге вызовет ExceptionCaught в обработчике, исключения не достигнут непревзойденной эксплуации. Даже переосмысление этого исключения в методе исключения не помогает (потому что Нетти обрабатывает его снова). Я хотел бы бросить (некоторые или все) неконтролируемые исключения из метода исключений. Есть какой-либо способ сделать это?
Решение
Нет, нет никакого способа, чтобы сделать это. Единственное, что вы можете сделать, - это справиться с исключением в ExceptionCaught. Почему это проблема для вас?
Другие советы
Я должен согласиться с Норманом, у меня была аналогичная проблема. Я создал метод ExceptionCaught () и в нем назвал свою рутину обработки исключений. Проблема, с которой я столкнулся, заключалась в том, что моя рутина обработки исключений пыталась сделать очистку и вызвать другие методы нетти, но это привело к тому, что нетти потерпевшая себя.
Мое исправление состояло в том, чтобы создать новую ветку из Insecting ExceptionCaught (), которая называет мою рутину обработки исключений и простой возврат из ExceptionCauge (). Это позволяет обработать исключения Нетти завершить и возобновить нормальную работу нетти. Вам нужно положить 1 -секунскую задержку в свой новый поток, прежде чем вызовать любые другие функции Netty. Это гарантирует, что обработка исключений Netty будет выполнена до того, как мой новый поток начнет его очистку и вызовет другие функции Netty. Это кажется немного чрезмерной работой, но она работает и избегает условий гонки.