您好,登錄后才能下訂單哦!
本篇內容主要講解“Java中為什么要規范異常處理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java中為什么要規范異常處理”吧!
1. 為什么需要規范的異常處理?
首先,規范異常處理也是為了后期能更好的維護,減少程序出錯,別再哪里都try{}catch(){},對于有強迫癥的我,規范處理異常是必不可少的;規范異常處理能讓你代碼變得更加整潔、干凈。
2. 異常處理分類
異常處理方式:
service拋出異常,controller統一try{}catch(){}
對于一些io、http請求異常能直接處理的就直接try{}catch(){}處理
controller不處理異常,通過@ControllerAdvice 定義部分類型的異常進行處理
@ControllerAdvice public class WebExceptionHandler { @ExceptionHandler({ BizException.class }) @ResponseStatus(HttpStatus.OK) public String processBizException(HttpServletRequest request, BizException e) { LOG.error("BizException", e); request.setAttribute("msg", e.getMsg()); return "common/error"; } }
異常分類:
請求方式異常
參數異常,如:使用@RequestParam但請求時參數未傳框架會拋出異常可以全局捕獲處理@ControllerAdvice
業務異常,如:用戶不存在、驗證碼失效,業務異常又可以根據不同的業務進行跟細化的分類,用戶異常、賬戶異常..
系統異常,如:參數不對導致查詢到的結果集多個
給請求方異常編碼分類:
public enum ReturnCodeEnum { SUCCESS("0000","請求成功"), MERCHANT_ERROR("0001","商戶異常"), ORDER_IS_NULL("0002","原始訂單不存在"), WAITING_PAYER_CONFIRM("9995","等待客戶確認"), WAITING("9996","請求處理中"), FAIL("9997","請求失敗"), BIZ_ERROR("9998","業務異常"), SYSTEM_EXCEPTION("9999","系統異常"); }
內部異常編碼分類:
/** * 銀行設置異常類 */ public class BankBizException extends BizException { private static final long serialVersionUID = 3536909333010163563L; /** 不存在通道分流設置 **/ public static final int CHANNEL_FLOW_IS_NULL = 101; /** 請求參數異常 **/ public static final int REQUEST_PARAM_ERRO = 102; /** 銀行渠道配置錯誤 **/ public static final int BANK_CHANNEL_ERRO = 103; /** 銀行渠道錯誤 **/ public static final int BANK_WAY_ERROR = 104; /** 子商戶的銀行渠道附屬信息為空 **/ public static final int BANK_SUBMERCHANT_INFO_IS_NULL = 105; /** 子商戶的銀行渠道附屬信息配置錯誤 **/ public static final int BANK_SUBMERCHANT_INFO_IS_ERROR = 106; /** 驗證銀行渠道傳的參數不符合要求 **/ public static final int BANK_CHANNEL_RULE_VALIDA_PARAM_ERROR = 107; /** agui 銀行渠道開放時間錯誤 **/ public static final int BANK_CHANNEL_DATE_ERRO = 108; }
這里為什么使用區分請求方和內部方式統一管理異常編碼?
首先我們需要給到請求方統一的請求和響應編碼表,能讓請求方根據不同的異常編碼進行分類處理,而對內的異常編碼是為了平臺內部統計或記錄異常信息,更有利于排查問題。業務異常的message要明確,可以直接返回給請求方定位錯誤,但系統異常message不能直接返回給請求方,可以提示為:系統異常,請稍后再試,因為的異常message可能是框架拋出來的,需要我們手動處理,我們只能定時記錄這些異常LOG日志,后期分類優化。
到此,相信大家對“Java中為什么要規范異常處理”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。