大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java后端開發視頻只學習需要注意哪幾點

Java后端開發視頻只學習需要注意哪幾點

更新時間:2020-06-19 12:55:57 來源:動力節點 瀏覽2133次

自定義枚舉類

自定義異常信息

統一返回信息

全局異常處理

01自定義枚舉類

對于一些我們經常返回的錯誤信息,我們可以將其抽取出來封裝成公共部分,然后將變化的作為參數傳入。例如我們在業務中經常要校驗某個字段是否為空,如果為空的話就要返回錯誤信息xxx字段不能為空,那么我們為什么不將xxx作為一個變量參數傳遞過來呢。于是就想到了用枚舉類定義異常信息,然后用String.format()方法進行轉義

public?enum?ResponseInfoEnum?{
?SUCCESS(ResponseResult.OK,"處理成功"),
?PARAM_LENGTH_ERROR(ResponseResult.ERROR,?"參數:%s,長度錯誤,max?length:?%s"),
?REQ_PARAM_ERROR(ResponseResult.ERROR,?"請求報文必填參數%s缺失"),;
?private?Integer?code;
?private?String?message;
?ResponseInfoEnum(Integer?code,?String?message)?{
?this.code?=?code;
?this.message?=?message;
?}
?public?Integer?getCode()?{
?return?code;
?}
?public?String?getMessage()?{
?return?message;
?}
}

使用方法如下

String.format(ResponseInfoEnum.REQ_PARAM_ERROR.getMessage(),"testValue")

可以看到生成的錯誤信息是請求報文必填參數testValue缺失

02自定義異常信息

首先我們需要知道我們為什么要用自定義異常信息呢?使用它有什么好處呢?

首先我們開發中肯定是分模塊進行開發的,所以首先我們統一了自定義異常類就統一了對外異常的展示方式。

使用自定義異常繼承相關的異常來拋出處理后的異常信息可以隱藏底層的異常,這樣更安全,異常信息也更加的直觀。自定義異常可以拋出我們自己想要拋出的信息,可以通過拋出的信息區分異常發生的位置,根據異常名我們就可以知道哪里有異常,根據異常提示信息進行程序修改。

有時候我們遇到某些校驗或者問題時,需要直接結束掉當前的請求,這時便可以通過拋出自定義異常來結束,如果你項目中使用了SpringMVC比較新的版本的話有控制器增強,可以通過 ControllerAdvice注解寫一個控制器增強類來攔截自定義的異常并響應給前端相應的信息。

自定義異常我們需要繼承RuntimeException

public?class?CheckException?extends?RuntimeException{
?public?CheckException()?{
?}
?public?CheckException(String?message)?{
?super(message);
?}
?public?CheckException(ResponseInfoEnum?responseInfoEnum,String?...strings)?{
?super(String.format(responseInfoEnum.getMessage(),strings));
?}
}

03統一返回信息

在我剛開始工作的一年中,所接觸的最多的項目就是前后端交互的項目了。所以有一個統一的返回信息不僅對前端來說更加便利,對于我們后面的AOP代理也有很大的好處。

@Data
@NoArgsConstructor
public?class?ResponseResult<T>?{
?public?static?final?Integer?OK?=?0;
?public?static?final?Integer?ERROR?=?100;
?private?Integer?code;
?private?String?message;
?private?T?data;
}

這樣前后端進行交互時就會更加便利了,如果要取業務數據那么就從data中取,去過要取是否成功的標志,那么就從code碼中取,如果要取后端返回的信息,那么就從message中取。

04全局異常處理

在我之前的項目中每個Controller方法中都充斥著try....catch...的代碼,而catch后的代碼都是大同小異,都是封裝了一下返回的錯誤信息之類的。那么我們為什么不將這些代碼抽取出來,利用Spring的全局異常處理簡化我們的代碼呢?

@Slf4j
@ControllerAdvice
public?class?ControllerExceptionHandler?{
?@ExceptionHandler(value?=?Exception.class)
?@ResponseBody
?public?ResponseResult<String>?defaultErrorHandler(HttpServletRequest?request,?Exception?exception){
?log.error(ControllerLog.getLogPrefix()+"Exception:?{}"+exception);
?return?handleErrorInfo(exception.getMessage());
?}
?@ExceptionHandler(CheckException.class)
?@ResponseBody
?public?ResponseResult<String>?checkExceptionHandler(HttpServletRequest?request,?CheckException?exception){
?return?handleErrorInfo(exception.getMessage());
?}
?private?ResponseResult<String>?handleErrorInfo(String?message)?{
?ResponseResult<String>?responseEntity?=?new?ResponseResult<>();
?responseEntity.setMessage(message);
?responseEntity.setCode(ResponseResult.ERROR);
?responseEntity.setData(message);
?ControllerLog.destoryThreadLocal();
?return?responseEntity;
?}
}

其中全局異常處理中,我們自定義的異常就沒有打印日志,因為對于自定義的異常我們是已知的異常,并且錯誤信息也已經很明確的返回了。而對于未知異常例如Exception就屬于未知的異常,我們就需要打印日志,如果這里有特殊需求,例如發短信、發郵件通知相關人員的話,這里也能夠進行全局的配置。

Java后端開發視頻只學習需要注意哪幾點

以上就是動力節點java培訓機構的小編針對“Java后端開發視頻只學習需要注意哪幾點”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久亚洲欧洲日产国码二区 | 国内一区二区 | 婷婷激情综合网 | 欧美一级在线 | 日韩精品中文字幕一区三区 | 国产特黄一级毛片特黄 | 日韩一区二区三区四区 | 国产高清精品久久久久久久 | 国产成人福利夜色影视 | 俄欧美做爰xxxⅹ在线视频 | 色天天综合 | 欧美毛片基地 | 波多野野结衣1区二区 | 亚洲一区二区中文 | 狼人综合伊人 | 日韩欧美一级毛片在线 | 丁香婷婷影音先锋5566 | 亚洲操综合 | 亚洲欧美日韩中字综合 | 亚洲精品国产第一区二区尤物 | 欧美成人免费高清网站 | 午夜影院免费体验区 | 亚洲高清在线观看看片 | 国产乱码精品一区二区三区四川 | 一道本不卡免费视频 | 色综合中文 | 日韩美一区二区三区 | 手机在线观看亚洲国产精品 | 亚洲国产精品一区二区第四页 | www神马我不卡影院免费观看 | 毛片视频免费观看 | 亚洲欧美日本在线观看 | 国产五月色婷婷六月丁香视频 | 久久综合久色欧美婷婷 | 五月天免费在线视频 | 人人爱人人性 | 国产福利一区二区在线观看 | 欧美最大成人毛片视频网站 | 亚洲va在线va天堂成人 | 香蕉成人啪国产精品视频综合网 | 天天插天天射 |