zoukankan      html  css  js  c++  java
  • SpringMVC统一异常处理(Controller处理)

    1、  在一个controller内的统一处理示例

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    
    @RestController
    public class TestCtl {
    
        @RequestMapping("/ready")
        public String ready(){
                throw new RuntimeException("ready抛出的异常");
        }
        
        @ExceptionHandler
        public String ExceptionHandler(Exception e) {
                return e.getMessage();
        }
    }

    请求结果:

    也可以自定义Exception,但最好是RuntimeException的子类,以避免“检查异常”必须被处理而造成代码冗余;

        @ExceptionHandler是Spring MVC已有的注解,可用于Controller、ControllerAdvice、RestControllerAdvice类的异常处理。

    2、 使用ControllerAdvice对同一类异常做统一处理示例:

    Controller

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class TestCtl {
    
        @RequestMapping("/ready")
        public String ready(){
                throw new RuntimeException("ready抛出的异常");
        }
    }

     统一异常拦截类

    import org.springframework.core.annotation.Order;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.RestControllerAdvice;
    
    @Order(0)
    @RestControllerAdvice(annotations = RestController.class)
    public class RestCtlAdvice {
    
    @ExceptionHandler
    @ResponseBody //RestControllerAdvice中无需添加此注解,同RestController
        public String ExceptionHandler(Exception e) {
                return e.getMessage();
        }
    }

         最后运行结果同1,RestCtlAdvice会对所有RestController中的异常进行处理,如果是Exception(此可以是自定义的特定异常的精细处理)类型异常,RestCtlAdvice类可以有多处,处理顺序按照给定的order来运行。RestController.class也可以替换为Controller.class,则对所有Controller的异常进行拦截。 

         Java 异常体系设计的目的在于通过使用少量代码,实现大型、健壮、可靠程序。异常处理是 Java 中唯一正式的错误报告机制。异常处理机制最大的好处就是降低错误代码处理的复杂程度。

          如果不使用异常,那么就必须在调用点检查特定的错误,并在程序的很多地方去处理它;如果使用异常,那么就不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误。因此只需要在一个地方处理错误,这种方式不仅节省代码,而且把“描述正确执行过程做什么事”和“出了问题怎么办”相分离。

  • 相关阅读:
    linux vps定时备份网站、数据库命令sh
    zencart批量表上传后 标题显示为网址 批量修改标题状态 SEO三要素
    robots.txt防止向黑客泄露网站的后台和隐私
    在网页中插入地图展示公司地址
    网站调用百度地图 根据地址查询经纬度
    jquery 未来元素事件示例 on() delegate() live()
    .htaccess A网站单页面301到B网站单页面
    linux批量设置部分文件与文件夹权限
    php中禁止单个ip与ip段访问的代码小结
    Spring整合ActiveMQ
  • 原文地址:https://www.cnblogs.com/aland-1415/p/12604752.html
Copyright © 2011-2022 走看看