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