真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中為什么要規(guī)范異常處理

本篇內(nèi)容主要講解“Java中為什么要規(guī)范異常處理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Java中為什么要規(guī)范異常處理”吧!

網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計體驗!已為成都樓梯護欄等企業(yè)提供專業(yè)服務(wù)。

1. 為什么需要規(guī)范的異常處理?

首先,規(guī)范異常處理也是為了后期能更好的維護,減少程序出錯,別再哪里都try{}catch(){},對于有強迫癥的我,規(guī)范處理異常是必不可少的;規(guī)范異常處理能讓你代碼變得更加整潔、干凈。

2. 異常處理分類

異常處理方式:

  • service拋出異常,controller統(tǒng)一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";
	}
}

異常分類:

  • 請求方式異常

  • 參數(shù)異常,如:使用@RequestParam但請求時參數(shù)未傳框架會拋出異??梢匀植东@處理@ControllerAdvice

  • 業(yè)務(wù)異常,如:用戶不存在、驗證碼失效,業(yè)務(wù)異常又可以根據(jù)不同的業(yè)務(wù)進行跟細(xì)化的分類,用戶異常、賬戶異常..

  • 系統(tǒng)異常,如:參數(shù)不對導(dǎo)致查詢到的結(jié)果集多個

給請求方異常編碼分類:

public enum ReturnCodeEnum {

    SUCCESS("0000","請求成功"),

    MERCHANT_ERROR("0001","商戶異常"),

    ORDER_IS_NULL("0002","原始訂單不存在"),

    WAITING_PAYER_CONFIRM("9995","等待客戶確認(rèn)"),

    WAITING("9996","請求處理中"),

    FAIL("9997","請求失敗"),

    BIZ_ERROR("9998","業(yè)務(wù)異常"),

    SYSTEM_EXCEPTION("9999","系統(tǒng)異常");
}

內(nèi)部異常編碼分類:

/**
 * 銀行設(shè)置異常類
 */
public class BankBizException extends BizException {
	private static final long serialVersionUID = 3536909333010163563L;

	/** 不存在通道分流設(shè)置 **/
	public static final int CHANNEL_FLOW_IS_NULL = 101;

	/** 請求參數(shù)異常 **/
	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;
	/** 驗證銀行渠道傳的參數(shù)不符合要求 **/
	public static final int BANK_CHANNEL_RULE_VALIDA_PARAM_ERROR = 107;
	
	/** agui 銀行渠道開放時間錯誤 **/
	public static final int BANK_CHANNEL_DATE_ERRO = 108;
}

這里為什么使用區(qū)分請求方和內(nèi)部方式統(tǒng)一管理異常編碼?

首先我們需要給到請求方統(tǒng)一的請求和響應(yīng)編碼表,能讓請求方根據(jù)不同的異常編碼進行分類處理,而對內(nèi)的異常編碼是為了平臺內(nèi)部統(tǒng)計或記錄異常信息,更有利于排查問題。業(yè)務(wù)異常的message要明確,可以直接返回給請求方定位錯誤,但系統(tǒng)異常message不能直接返回給請求方,可以提示為:系統(tǒng)異常,請稍后再試,因為的異常message可能是框架拋出來的,需要我們手動處理,我們只能定時記錄這些異常LOG日志,后期分類優(yōu)化。

到此,相信大家對“Java中為什么要規(guī)范異常處理”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


新聞名稱:Java中為什么要規(guī)范異常處理
本文地址:http://weahome.cn/article/pchhjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部