close

點擊上方「Java基基」,選擇「設為星標」

做積極的人,而不是積極廢人!

每天14:00更新文章,每天掉億點點頭髮...

源碼精品專欄

原創 | Java 2021超神之路,很肝~

中文詳細注釋的開源項目

RPC 框架 Dubbo 源碼解析

網絡應用框架 Netty 源碼解析

消息中間件 RocketMQ 源碼解析

數據庫中間件 Sharding-JDBC 和 MyCAT 源碼解析

作業調度中間件 Elastic-Job 源碼解析

分布式事務中間件 TCC-Transaction 源碼解析

Eureka 和 Hystrix 源碼解析

Java 並發源碼

來源:toutiao.com/

i6878184496945070604/

前言
推薦理由
實踐
1 封裝統一返回結果類
2 自定義異常封裝類
3 錯誤枚舉,拒絕硬編碼
4 全局異常處理類
5 測試
前言

軟件開發springboot項目過程中,不可避免的需要處理各種異常,spring mvc 架構中各層會出現大量的try {...} catch {...} finally {...} 代碼塊,不僅有大量的冗餘代碼,而且還影響代碼的可讀性。這樣就需要定義個全局統一異常處理器,以便業務層再也不必處理異常。

基於 Spring Boot + MyBatis Plus + Vue & Element 實現的後台管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
推薦理由
代碼複製到項目中通過簡單的配置即可實現
可以靈活的根據自己的業務異常進行更細粒度的擴展

基於 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的後台管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://gitee.com/zhijiantianya/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
實踐1 封裝統一返回結果類開發好物推薦5之統一異常處理從此拋棄try與catch

源代碼

publicclassAjaxResult{//是否成功privateBooleansuccess;//狀態碼privateIntegercode;//提示信息privateStringmsg;//數據privateObjectdata;publicAjaxResult(){}//自定義返回結果的構造方法publicAjaxResult(Booleansuccess,Integercode,Stringmsg,Objectdata){this.success=success;this.code=code;this.msg=msg;this.data=data;}//自定義異常返回的結果publicstaticAjaxResultdefineError(BusinessExceptionde){AjaxResultresult=newAjaxResult();result.setSuccess(false);result.setCode(de.getErrorCode());result.setMsg(de.getErrorMsg());result.setData(null);returnresult;}//其他異常處理方法返回的結果publicstaticAjaxResultotherError(ErrorEnumerrorEnum){AjaxResultresult=newAjaxResult();result.setMsg(errorEnum.getErrorMsg());result.setCode(errorEnum.getErrorCode());result.setSuccess(false);result.setData(null);returnresult;}publicBooleangetSuccess(){returnsuccess;}publicvoidsetSuccess(Booleansuccess){this.success=success;}publicIntegergetCode(){returncode;}publicvoidsetCode(Integercode){this.code=code;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this.msg=msg;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}}2 自定義異常封裝類開發好物推薦5之統一異常處理從此拋棄try與catch

源碼:

publicclassBusinessExceptionextendsRuntimeException{privatestaticfinallongserialVersionUID=1L;/***錯誤狀態碼*/protectedIntegererrorCode;/***錯誤提示*/protectedStringerrorMsg;publicBusinessException(){}publicBusinessException(IntegererrorCode,StringerrorMsg){this.errorCode=errorCode;this.errorMsg=errorMsg;}publicIntegergetErrorCode(){returnerrorCode;}publicvoidsetErrorCode(IntegererrorCode){this.errorCode=errorCode;}publicStringgetErrorMsg(){returnerrorMsg;}publicvoidsetErrorMsg(StringerrorMsg){this.errorMsg=errorMsg;}}3 錯誤枚舉,拒絕硬編碼開發好物推薦5之統一異常處理從此拋棄try與catch

源碼

publicenumErrorEnum{//數據操作錯誤定義SUCCESS(200,"成功"),NO_PERMISSION(403,"你沒得權限"),NO_AUTH(401,"未登錄"),NOT_FOUND(404,"未找到該資源!"),INTERNAL_SERVER_ERROR(500,"服務器異常請聯繫管理員"),;/**錯誤碼*/privateIntegererrorCode;/**錯誤信息*/privateStringerrorMsg;ErrorEnum(IntegererrorCode,StringerrorMsg){this.errorCode=errorCode;this.errorMsg=errorMsg;}publicIntegergetErrorCode(){returnerrorCode;}publicStringgetErrorMsg(){returnerrorMsg;}}4 全局異常處理類開發好物推薦5之統一異常處理從此拋棄try與catch

源碼

/***全局異常處理器**/@RestControllerAdvicepublicclassGlobalExceptionHandler{privatestaticfinalLoggerlog=LoggerFactory.getLogger(GlobalExceptionHandler.class);/***處理自定義異常**/@ExceptionHandler(value=BusinessException.class)publicAjaxResultbizExceptionHandler(BusinessExceptione){log.error(e.getMessage(),e);returnAjaxResult.defineError(e);}/***處理其他異常**/@ExceptionHandler(value=Exception.class)publicAjaxResultexceptionHandler(Exceptione){log.error(e.getMessage(),e);returnAjaxResult.otherError(ErrorEnum.INTERNAL_SERVER_ERROR);}}5 測試開發好物推薦5之統一異常處理從此拋棄try與catch

返回結果:

開發好物推薦5之統一異常處理從此拋棄try與catch

歡迎加入我的知識星球,一起探討架構,交流源碼。加入方式,長按下方二維碼噢:

已在知識星球更新源碼解析如下:

最近更新《芋道 SpringBoot 2.X 入門》系列,已經 101 余篇,覆蓋了MyBatis、Redis、MongoDB、ES、分庫分表、讀寫分離、SpringMVC、Webflux、權限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能測試等等內容。

提供近 3W 行代碼的 SpringBoot 示例,以及超 6W 行代碼的電商微服務項目。

獲取方式:點「在看」,關注公眾號並回復666領取,更多內容陸續奉上。

文章有幫助的話,在看,轉發吧。

謝謝支持喲 (*^__^*)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()