SpringBoot中自带的异常捕获机制返回的默认页面比较丑,对用户来说不够人性化。所以这篇文章来讲解SpringBoot钟自定义全局异常捕获。
本文的源码已经上传GitHub:https://github.com/haozz1994/exceptiondemo
主要讲解三种异常捕获形式:
- 页面跳转异常
- ajax异常
- 统一返回异常的形式
分别来看三种形式的全局异常捕获:
1.页面跳转异常
首先新建一个异常:
package com.haozz.exceptiondemo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author haozz
* @date 2018/6/19 16:57
* @description
*/
@Controller
@RequestMapping(value = "/err")
public class ErrorCtrl {
@RequestMapping(value = "/error")
public String error(){
int a = 1/0;
return "abcdefg";
}
}
浏览器请求,会得到SpringBoot默认的异常页面:
新建异常处理工具类MyExceptionHandler:
package com.haozz.exceptiondemo.utils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author haozz
* @date 2018/6/19 17:16
* @description
*/
@ControllerAdvice
public class MyExceptionHandler {
public static final String ERROR_VIEW = "my_error";
@ExceptionHandler(value = Exception.class)