代理與異常筆記

https://segmentfault.com/a/1190000012262244
代理對象的代理方法執(zhí)行時對異常的處理方式:
異常處理的邏輯是,對RuntimeException、接口已聲明的異常、Error直接拋出,其他異常被包裝成UndeclaredThrowableException拋出。
而如果代理方法調(diào)用了被代理對象的原方法,是通過反射調(diào)用的method.invoke(args)。此時目標方法拋出的異常會被invoke方法的InvocationTargetException異常包裝。而InvocationTargetException又會被UndeclaredThrowableException異常包裝。所以如果目標方法拋出了一個聲明的受檢異常,最中打印出的堆棧是:UndeclaredThrowableException - InvocationTargetException - CheckedException, 而不是期望的CheckedException。
所以log在打印異常時直接打印e,而不要e.getMessage(),否則日志看不出來

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章:Java程序設(shè)計概述 Java和C++最大的不同在于Java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能...
    loneyzhou閱讀 1,359評論 1 7
  • 引言 在程序運行過程中(注意是運行階段,程序可以通過編譯),如果JVM檢測出一個不可能執(zhí)行的操作,就會出現(xiàn)運行時錯...
    Steven1997閱讀 2,596評論 1 6
  • 寫著寫著發(fā)現(xiàn)簡書提醒我文章接近字數(shù)極限,建議我換一篇寫了。 建議52:推薦使用String直接量賦值 一般對象都是...
    我沒有三顆心臟閱讀 1,437評論 2 4
  • 金錢的本質(zhì)是什么?金錢就是反映你對你的人生目標是否足夠清晰。 當你看到你的賬戶余額時,情緒的起伏波動是會影響到金錢...
    Wu999閱讀 385評論 0 0
  • 我在南方雨意彌漫的深夜想你,那一刻的寂莫讓我想起了久遠的你。我知道故鄉(xiāng)的此時早已是飄著雪花,那季節(jié)的清寒吹落了,一...
    孫潤閱讀 268評論 2 3

友情鏈接更多精彩內(nèi)容