84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
求教,線上應用,如果資料庫操作(insert,update,delete)失敗的話,處理邏輯應該是如何?
將錯誤傳回給使用者?
不做處理?
在執行一次?
還是?
操作失敗正常回傳就行了 ,回傳操作失敗的錯誤碼,例如
success:false, message:更新/删除失败
但是作為開發有一個原則就是,失敗的具體資訊不能輸出到使用者操作介面,
打個比方,你更新一條數據,更新失敗,是由於資料庫連線失敗,資料庫掛了之類的,你不可能把錯誤訊息輸出到用戶端,告訴用戶資料庫連線失敗吧
如果是sql報錯,這屬於應用錯誤了,一定要捕捉異常,將異常記錄在日誌裡
sql的相關操作一定要用try{}catch(){} 千萬不能把異常流到上游,而上游沒有做對異常處理的相關操作
批量操作一定要做好事務,
當然是找出所有捕獲到異常比如暱稱唯一,密碼不正確等等 其他的就返回未知異常,不要暴露自己的異常信息.
根據錯誤碼給用戶回傳訊息吧,再執行一次不建議,因為對資料庫來說可能會造成髒數據
現場還原:資料回滾至操作前。重不重試分場景,通用的原則是同步不重試,非同步重試
異常處理:同步:異常包裝成可讀取的錯誤訊息給用戶,提醒用戶重試。非同步:監控異常訊息
操作失敗正常回傳就行了 ,回傳操作失敗的錯誤碼,例如
但是作為開發有一個原則就是,失敗的具體資訊不能輸出到使用者操作介面,
打個比方,你更新一條數據,更新失敗,是由於資料庫連線失敗,資料庫掛了之類的,你不可能把錯誤訊息輸出到用戶端,告訴用戶資料庫連線失敗吧
如果是sql報錯,這屬於應用錯誤了,一定要捕捉異常,將異常記錄在日誌裡
sql的相關操作一定要用try{}catch(){} 千萬不能把異常流到上游,而上游沒有做對異常處理的相關操作
批量操作一定要做好事務,
當然是找出所有捕獲到異常比如暱稱唯一,密碼不正確等等
其他的就返回未知異常,不要暴露自己的異常信息.
根據錯誤碼給用戶回傳訊息吧,再執行一次不建議,因為對資料庫來說可能會造成髒數據
現場還原:資料回滾至操作前。重不重試分場景,通用的原則是同步不重試,非同步重試
異常處理:同步:異常包裝成可讀取的錯誤訊息給用戶,提醒用戶重試。非同步:監控異常訊息