中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中為什么要規范異常處理

發布時間:2021-11-16 14:04:54 來源:億速云 閱讀:137 作者:iii 欄目:大數據

本篇內容主要講解“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中為什么要規范異常處理”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂水县| 吉隆县| 虎林市| 昌宁县| 县级市| 柞水县| 淮滨县| 通化市| 石河子市| 无为县| 隆尧县| 堆龙德庆县| 桑植县| 南皮县| 西平县| 白银市| 无为县| 唐河县| 武宣县| 平塘县| 威宁| 汽车| 天等县| 枣阳市| 遂川县| 三明市| 扬州市| 咸宁市| 舞阳县| 饶阳县| 凉山| 聂荣县| 保靖县| 漳平市| 肇源县| 宜兰市| 蓬安县| 沛县| 建水县| 静安区| 商洛市|