SpringBoot 全域性異常攔截和日誌配置

2021-09-10 02:02:57 字數 2987 閱讀 9687

作用:springboot中不用關心異常,不用顯示的進行try/catch,**美觀,正解

擴充套件:可以加到類上,也可以加到類的方法上

關於**的幾點說明:

**中的@data註解是應用了lombok,需要的話匯入下,也可以刪除註解,自己生成get/set和構造方法

json格式化工具用的是fastjson

異常中加入了寫日誌,稍後會把日誌的配置**一併貼出來

全域性異常配置類

@controlleradvice

@responsebody

public class globalexceptionhandler

//空指標異常

@exceptionhandler(nullpointerexception.class)

public string nullpointerexceptionhandler(nullpointerexception ex)

//型別轉換異常

@exceptionhandler(classcastexception.class)

public string classcastexceptionhandler(classcastexception ex)

//io異常

@exceptionhandler(ioexception.class)

public string ioexceptionhandler(ioexception ex)

//未知方法異常

@exceptionhandler(nosuchmethodexception.class)

public string nosuchmethodexceptionhandler(nosuchmethodexception ex)

//陣列越界異常

@exceptionhandler(indexoutofbound***ception.class)

public string indexoutofbound***ceptionhandler(indexoutofbound***ception ex)

//400錯誤

//400錯誤

@exceptionhandler()

public string requesttypemismatch(typemismatchexception ex)

//400錯誤

@exceptionhandler()

public string requestmissingservletrequest(missingservletrequestparameterexception ex)

//405錯誤

//406錯誤

//500錯誤

@exceptionhandler()

public string server500(runtimeexception ex)

//棧溢位

@exceptionhandler()

public string requeststackoverflow(stackoverflowerror ex)

//除數不能為0

@exceptionhandler()

public string arithmeticexception(arithmeticexception ex)

//其他錯誤

@exceptionhandler()

public string exception(exception ex)

private string resultformat(integer code, t ex)

}

json格式化輸出

@data

public class jsonresult implements serializable

;public jsonresult(int code, string msg, mapdata)

public static string success()

public static string success(mapdata)

public static string failed()

public static string failed(string msg)

public static string failed(int code, string msg)

}

controller測試**

@responsebody

public string zero()

日誌輸出

capture exception by globalexceptionhandler: code: 13 detail: / by zero

#log

logging.config=classpath:logback.xml

logging.path=e:/log

logback.xml配置檔案

<?xml version="1.0" encoding="utf-8"?>

%d [%thread] %-5level %logger - %msg%n

$/testweb.log.%d.log

30%d [%thread] %-5level %logger - %msg%n

10mb

全域性異常處理 springBoot 全域性異常處理

先讚後看,月入百萬 springboot開發的web專案中,強調分層的概念,乙個完整的專案一般會劃分出controller層和service層。因此,為了 的可維護性,controller層 應該盡量簡潔,驗證一下引數,直接丟給service層處理即可 異常處理的方式無外乎兩種 在springboo...

springboot全域性異常捕獲

新專案中需要用到檔案上傳,有需要對上傳檔案大小進行限制,當檔案超過限制的時候,springboot框架會直接丟擲異常,不會進入你的方法中,當我們需要向前臺返回資訊的時候也無從返回,只能進行全域性捕獲檔案過大的異常,然後再返回資訊。controlleradvice public class mycon...

SpringBoot全域性異常處理

簡介通常在controller層需要去捕獲service層的異常,防止返回一些不友好的錯誤資訊到客戶端,但如果controller層每個方法都用模組化的try catch 去捕獲異常,會很難看也難維護,所以使用全域性異常比較方便 這方法是springboot封裝好了的,我們直接使用即可,普通的配置我...