SpringBoot异常处理机制

//模拟个异常
public class UserNotExistException extends RuntimeException {

    public UserNotExistException() {
        super("用户名不存在!!!");
    }
}


//异常处理类
@ControllerAdvice
public class MyExceptionHandler {

    //不会自动适应浏览器客户端返回的都是json
    /*@ResponseBody
    @ExceptionHandler(UserNotExistException.class)
    public  Map<String,Object> HandlerException(Exception e , HttpServletRequest request){

        Map<String,Object> map = new HashMap<>();
        map.put("code","user.notexist");
        map.put("msg",e.getMessage());
        map.put("msgd",e.getMessage());


        return map;
    }*/


//自适应浏览器和客户端
     @ExceptionHandler(UserNotExistException.class)
    public String handlerException(Exception e , HttpServletRequest request){
        Map<String,Object> map = new HashMap<>();
        map.put("code","user.notexist");
        map.put("msg",e.getMessage());
       // map.put("msgd",e.getMessage());
        request.setAttribute("javax.servlet.error.status_code",500);
        request.setAttribute("ext",map);


        return "forward:/error";
    }


    //添加自己的异常属性
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
        Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
        map.put("company","atui");
        //我们的异常处理器携带的数据
        Map<String,Object> ext = (Map<String, Object>) webRequest.getAttribute("ext", 0);
        map.put("ext",ext);
        return map;
    }


页面取值
<h1>status:[[${status}]]</h1>
<h2>timestamp:[[${timestamp}]]</h2>
<h2>exception:[[${exception}]]</h2>
<h2>message:[[${message}]]</h2>
<h2>ext:[[${ext.code}]]</h2>
<h2>ext:[[${ext.message}]]</h2>

 

猜你喜欢

转载自blog.csdn.net/loveyour_1314/article/details/80855368