最近基于netty寫了點伺服器端的程式,算是第一次比較正式的使用吧。在測試過程發現了一個問題,用用戶端程式連伺服器無響應,而伺服器端的netty也沒任何錯誤日志輸出。搞到我有點茫然,不知道是伺服器端還是用戶端出錯了?
想了一些時間,決定優先檢查一下伺服器端的程式。忽然想起netty裡面畢竟是多線程模型的,會不會是非主線程裡面産生了異常呢?于是乎,設定了Thread.setDefaultUncaughtExceptionHandler(XXX),再次測試程式,結果依然相同,兩端均沒報錯。
有點無奈的情況下,隻好在messageReceive(xxx)方法的内部代碼裡面試試增加try catch了,這下好了,終于看到有異常了,确實是伺服器端程式邏輯有問題。
老問題雖然解決了,但又有個新問題,為啥Thread.setDefaultUncaughtExceptionHandler(XXX)沒起作用呢?想了好些時間沒能搞明白!
稍微放了放,休息一番之後,突然想起了netty内部的exceptionCaught(xxx)方法,從這裡入手似乎才是正确的做法,netty架構還是比較友好的處理了異常資訊的,最後會傳遞到exceptionCaught方法那裡去。
好吧,先這麼簡略的記錄一下。
釋出在:[url]http://auzll.iteye.com[/url]