SpringBoot之全域性捕獲異常

楓葉梨花發表於2019-03-08

系統使用過程中,難免會出現BUG,但是如果出現BUG而導致了異常,不經過處理的話,就會將異常的相關資訊直接顯示在頁面,十分不友好,而且容易出現更多的問題。所以這時候就需要全域性捕獲異常,以更友好的形式反饋給使用者。

SpringBoot設定全域性捕獲異常很簡單,只要實現以下程式碼即可:

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

//全域性捕獲異常類
@ControllerAdvice
public class GlobalExceptionHandler {

	@ExceptionHandler(RuntimeException.class)
	@ResponseBody
	public Map<String,Object> resultError(){
		Map<String,Object> result = new HashMap<>();
		result.put("errCode", "500");
		result.put("errMsg", "系統錯誤");
		return result;
	}
}
複製程式碼

這段程式碼是返回JSON字串給呼叫者,一旦出現RuntimeException異常即返回{"errCode":"500","errMsg":"系統錯誤"}

當然也可以返回統一自定義的物件,使用@ResponseBody返回JSON字串。也可以用自定義的錯誤頁面,那樣就不需要@ResponseBody

相關文章