一 什麼是異常報告器
收集錯誤資訊,用於向用戶報告錯誤原因
。
二 異常報告器的作用
1 程式執行失敗的時候會在控制檯或者日誌上打印出一個具體的錯誤報告,以方便排查問題。
三 異常報告器原始碼分析
1 在SpringApplication建構函式中呼叫setInitializers,載入spring。factories檔案,把FailAnalyzed子類全限定名封裝進List集合中。
2 在run函式中,建立FailureAnalyzed例項,在建構函式中,在快取中獲取FailureAnalyzed子類全限定名存於List集合中,接著迴圈集合使用反射建立FailureAnalyzed子類例項並存於List集合中。
3 當run函式中有異常丟擲則執行handleRunFailure函式,迴圈執行listeners。finished(context, exception);傳送事件(ApplicationFailed事件),在廣播器例項函式multicastEvent迴圈取出監聽器例項並檢驗事件(ApplicationFailed)是否屬於監聽器,成立則呼叫函式處理。
取出監聽器完成
廣播器廣播事件(ApplicationFailed)
監聽器處理事件(ApplicationFailed)
4 執行reportFailure 函式,迴圈取出FailureAnalyzed子類例項,判斷異常是否屬於某個Class例項屬於則返回FailureAnalyzed子類例項, 再透過FailureAnalyzedReport例項輸出FailureAnalyzed異常資訊。
獲取異常對應的FailureAnalyzed
查詢異常對應的FailureAnalysis例項
異常報告器輸出異常資訊
異常資訊格式化構建輸出