Come gestire le eccezioni non controllate gettato in Netty gestore pila
-
27-10-2019 - |
Domanda
Dal momento che qualsiasi eccezione generata in pila gestore Netty genererà un evento a monte e, infine, invocano exceptionCaught nel gestore eccezioni non raggiungerà il uncaught-eccezioni-gestore. Anche rethrowing tale eccezione nel metodo exceptionCaught non aiuta (perché maniglie Netty di nuovo). Vorrei lanciare (alcuni o tutti) eccezioni unchecked dal metodo exceptionCaught. C'è un modo per fare questo?
Soluzione
Non v'è alcun modo per fare questo. L'unica cosa che si può fare su è è quello di gestire l'eccezione in eccezione intercettata. Perché questo è un problema per voi?
Altri suggerimenti
sono d'accordo con Norman, ho avuto un problema simile. Ho creato un metodo exceptionCaught () e in essa chiamato la mia gestione delle eccezioni di routine. Il problema che ho incontrato è stato il mio eccezione routine di gestione ha cercato di fare pulizia e chiamare altri metodi di Netty, ma che ha provocato Netty ottenere appeso.
La mia difficoltà è stato quello di creare un nuovo thread dall'interno exceptionCaught () che chiama la mia gestione delle eccezioni di routine e di ritorno semplice da exceptionCaught (). Questo permette ad eccezione di Netty gestione per terminare e riprendere il normale funzionamento Netty. Hai bisogno di mettere un ritardo di 1 secondo all'interno del vostro nuovo thread prima di chiamare qualsiasi altra funzione Netty pure. Ciò assicurerà la gestione delle eccezioni di Netty è fatto prima del mio nuovo thread inizia la sua fino pulita e chiama altre funzioni Netty. Mi sembra un po 'eccessivo lavoro ma funziona ed evita condizioni di gara.