java為什么要拋出異常 java異常從業(yè)務層集中拋出,是不是每個控制層方法都要trycatch?
java異常從業(yè)務層集中拋出,是不是每個控制層方法都要trycatch?控制層中發(fā)生的異常有兩種情況:一種是意料之內的,可預估的。這種異常需要捕獲異常后做出“嘗試修復”,例如在查詢用戶信息rpc的過程
java異常從業(yè)務層集中拋出,是不是每個控制層方法都要trycatch?
控制層中發(fā)生的異常有兩種情況:
一種是意料之內的,可預估的。這種異常需要捕獲異常后做出“嘗試修復”,例如在查詢用戶信息rpc的過程中發(fā)生異常,包括什么500啊,404啊,這些對于客戶端來說基本不用重試,可以通過清晰的錯誤碼告知,相反,超時等情況則可以通知客戶端稍后重試,通過不同的錯誤碼引導客戶端進行不同的操作。
另一種情況則是控制層本身就沒考慮到的情況。這種情況盲目的try/catch沒多大意義,通常會在框架層面做統(tǒng)一處理,包括記錄異常信息,以及優(yōu)雅的返回失敗。
最后,對于try/catch的使用,我們不是并不是為了看不見異常,更多的是考慮我捕獲后能做什么,能否嘗試解決這個問題,如果不行,拋給上層,能否記錄并告警,如果沒考慮清楚這個問題,很容易犯一個大忌(吞掉異常)。