先讚後看,月入百萬
springboot
開發的web專案中,強調分層的概念,乙個完整的專案一般會劃分出controller
層和service
層。
因此,為了**的可維護性,controller
層**應該盡量簡潔,驗證一下引數,直接丟給service
層處理即可
異常處理的方式無外乎兩種:
在springboot
的web專案中可以採用全域性異常處理的方式:
具體實現
自定義異常:
public enum exceptiontype exceptiontype(int code,level level) public int getcode()}
@data@allargsconstructor@noargsconstructorpublic class serviceexception extends exception
自定義errorvo
和commonjsonresponse
,這兩個類定義了當出現異常時,返回給呼叫方的json資料格式:
在controller
層寫乙個全域性異常處理類,幾個關鍵點:
@restcontroller@controlleradvice@slf4jpublic class customizedexceptionhandler extends responseentityexceptionhandler else if(extype==exceptiontype.illegal_param)else } @override public responseentityhandlemethodargumentnotvalid( methodargumentnotvalidexception ex, httpheaders headers, httpstatus status, webrequest request) } errorvo errordetails = new errorvo(new date(), request.getparametermap(), request.getdescription(false)); commonjsonresponseresponse = new commonjsonresponse<>(httpstatus.bad_request.value(), exceptiontype.illegal_param.getcode(), message); response.setdata(errordetails); return new responseentity<>(response, httpstatus.bad_request); }}
controller
層在檢驗引數時加上@validated
註解,這樣在校驗引數失敗時,會呼叫全域性異常處理類中的handlemethodargumentnotvalid
方法
service
層方法就是列印異常日誌並向上丟擲serviceexception
異常:
@service@slf4jpublic class myservice catch (exception e) }}
最後的效果圖:
引數非法時:
引數合法但service層出現異常時:
全域性異常處理
3 丟擲異常類的使用 處理 介面無權訪問異常accessdeniedexception param e return exceptionhandler accessdeniedexception.class public responseentity handleaccessdeniedexcept...
struts 異常處理 全域性異常處理
記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...
dubbo全域性異常處理 dubbo異常處理
dubbo異常處理 我們的專案使用了dubbo進行不同系統之間的呼叫。每個專案都有乙個全域性的異常處理,對於業務異常,我們會拋出自定義的業務異常 繼承runtimeexception 全域性的異常處理會根據不同的異常型別進行不同的處理。最近我們發現,某個系統呼叫dubbo請求,provider端 服...