摘要:異常堆棧開發過程中,不可避免的會有未考慮的異常場景,堆棧信息可以幫助快速解決故障。異常日志有時候需要借助異常堆棧信息定位錯誤原因,而用戶未必能記得和反饋錯誤堆棧信息,此時要么是自行復現錯誤來定位,要么是通過歷史錯誤日志定位。
一、異常設計
異常設計主要考慮以下方面:
異常信息包含:
錯誤碼:異常的唯一編碼。
錯誤描述:告知使用者和調用方的描述信息。
異常堆棧:Java開發過程中,不可避免的會有未考慮的異常場景,堆棧信息可以幫助快速解決故障。
異常變量:錯誤描述中可替換的變量,變量的實際取值可以幫助快速查找錯誤原因,例如:
ERR-1001=用戶證件錯誤,用戶ID:{}
其中ERR-1001是錯誤碼,后面是錯誤描述,{}為可替換的變量,實際異常拋出時,可傳入變量,由異常框架來統一處理。
三、異常分類異常分類的作用是根據不同的異常類型可以走不同的處理分支,如果有這樣的需要,可以對異常分類,否則可以不做區分,統一使用一個異常類則可。另外,通過對錯誤碼分類也可以達到走不同處理分支目的,所以異常分類并不是必須的,而且定義多了使用時還得思考應該用哪一個,個人傾向簡化處理。
四、處理策略捕捉時機:在實際Java代碼中,調用鏈可能如下:
那么異常該在哪里捕捉?
建議是:如果不因異常而改變處理邏輯,就不需要捕捉異常,一直向上拋,讓公共框架統一處理然后返回給前端。這樣做的好處是邏輯統一,也不需要傷腦筋思考到底要不要捕捉異常。
異常日志
有時候需要借助異常堆棧信息定位錯誤原因,而用戶未必能記得和反饋錯誤堆棧信息,此時要么是自行復現錯誤來定位,要么是通過歷史錯誤日志定位。通過錯誤日志定位就要將錯誤信息記錄下來,一般通過文件日志記錄,也可以采集后記錄到數據庫中,方便查詢,入庫時為了避免錯誤日志太多,可以考慮將堆棧信息的hash值也記錄下來,對于hash值重復的異常,只需要更新最后發生時間,這樣就能減少異常日志的大小。
異常界定
異常界定主要考慮查詢不到數據時是否要作為異常返回,對此不應作為異常,而是由調用方自行判斷是否要作為錯誤。
end.
站點: http://javashizhan.com/
微信公眾號:
加入知識星球,參與討論,更多實戰代碼分享!
https://t.zsxq.com/RNzfi2j
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76020.html
摘要:一前后端接口設計前后端接口設計主要考慮以下幾點二接口內容接口內容包括鑒權信息,如用于身份識別的。公共信息,例如用戶,項目等需要傳給后端的公共數據。 一、前后端接口設計 前后端接口設計主要考慮以下幾點: showImg(https://segmentfault.com/img/bVbwc4u?w=2095&h=891); 二、接口內容 接口內容包括: 鑒權信息,如用于身份識別的t...
摘要:五中調用以上為集成的所有步驟,完整實例代碼掃碼加入微信公眾號并回復,獲取倉庫地址。站點微信公眾號加入知識星球,參與討論,更多實戰代碼分享 一、pom文件 引入mybatis org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0 ...
摘要:但能拷貝圖粘貼后不失真通常是收費富文本編輯器才具備的能力。是否支持編程語言高亮,例如按,語言高亮是否支持數學公式等等因此選擇了兩款富文本編輯器,支持截屏粘貼,當做跟蹤系統時這個功能特別有用。 一、Web應用技術棧 在開發Web應用時,通常會使用到以下技術棧: showImg(https://segmentfault.com/img/bVbwceG);對應這些技術棧都已有相應的開源產品...
摘要:一分布式的實現在微服務架構下,需要支持分布式,分布式可以通過來實現,也可以通過數據庫來實現,本文介紹實現。二安裝下載地址選擇對應的版本安裝。進入安裝目錄啟動。站點微信公眾號加入知識星球,參與討論,更多實戰代碼分享 一、分布式Session的Redis實現 在微服務架構下,需要支持分布式Session,分布式Session可以通過Redis來實現,也可以通過數據庫來實現,本文介紹Redi...
閱讀 2521·2023-04-25 14:54
閱讀 595·2021-11-24 09:39
閱讀 1804·2021-10-26 09:51
閱讀 3846·2021-08-21 14:10
閱讀 3477·2021-08-19 11:13
閱讀 2692·2019-08-30 14:23
閱讀 1804·2019-08-29 16:28
閱讀 3349·2019-08-23 13:45