Spring异常处理

Spring异常处理

无规则不成方圆,很多人知道这句话,但是做到的很少,因为随性,开发写BUG实际中,经常有这样那样的错误,怎么把错误统一起来,怎么收集一个错误,这是最关键的,这里抛开日志的记录,那些是单独话题,这里我说如何优雅的异常处理。优雅是相对而言,我们这里要做的就是不那么喽,就是不要控制器中出现大片的try..cach..这样的语句,有的甚至说不控制不就可以了吗?不控制更危险,因为不控制随意显示,有可能导致直接解散!

异常处理必备知识:

@ControllerAdvice

这个其实看源码就知道,他其实是@Compoent他在运行的时候其实就会是一个Bean

@ExceptionHandler

通过这个注解的value属性,我们能指定我们要拦截的异常,这里指定根方法,进行所有异常的拦截,当然也可以单独拦截某一种异常,后边我会讲到

优雅处理错误步骤

①做一个美观的错误页面

②添加一个ControllerAdvice控制器,用来拦截所有异常

③人为去制造一个错误

做一个美观的错误页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误显示DEMO</title>
</head>
<body>
    ${erroMsg}
</body>
</html>

定义ControllerAdvice控制器

@ControllerAdvice
public class ExceptionDemo {
    @ExceptionHandler(value = Exception.class)
    public ModelAndView exception(Exception exception, WebRequest request) {
        ModelAndView modelAndView = new ModelAndView("error");
        modelAndView.addObject("erroMsg", exception.getMessage());
        return modelAndView;
    }
}

造一个错误来测试

@Controller
public class DemoController {
    
    @RequestMapping("/advice")
    public String demo() throws IllegalAccessException {
        throw new IllegalAccessException("sulwan");
    }
}

测试效果

http://localhost:8080/advice

预览这个地址,应该就看见了我们自定义错误消息显示到页面去了!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容