系統使用過程中,難免會出現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
。