Как справиться с неконтролируемыми исключениями, брошенными в стеке обработчиков Netty

StackOverflow https://stackoverflow.com/questions/8823774

  •  27-10-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top