zoukankan      html  css  js  c++  java
  • @ControllerAdvice + @ExceptionHandler全局处理Controller层异常

    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;

    前言

    Service抛出运行时异常时,我们的Controller层就不得不进行try-catch处理Service层的异常,否则会返回一些不友好的错误信息到客户端。但是,Controller层每个方法体都写一些模板化的try-catch的代码,很难看也难维护,特别是还需要对Service层的不同异常进行不同处理的时候。

    1.简介

    优点:将 Controller层的异常和数据校验的异常进行统一处理,减少模板代码,减少编码量,提升扩展性和可维护性。
    缺点:只能处理Controller层未捕获(往外抛)的异常,对于 Interceptor(拦截器)层的异常,Spring 框架层的异常,就无能为力了。

    1. @ControllerAdvice是Controller的一个辅助类,用法基本是将其声明在某个bean上,然后在该bean的方法上使用其他的注解来指定不同的织入逻辑。
    2. @ExceptionHandler的作用主要在于声明一个或多个类型的异常,当符合条件的Controller抛出这些异常之后将会对这些异常进行捕获,然后按照其标注的方法的逻辑进行处理,从而改变返回的视图信息。

    2.基本使用

    @ControllerAdvice(basePackages = "sell")
    public class SpringControllerAdvice {
      @ExceptionHandler(RuntimeException.class)
      @ResponseStatus(HttpStatus.FORBIDDEN)    //设置状态码
      public ModelAndView runtimeException(RuntimeException e) {
        e.printStackTrace();
        return new ModelAndView("common/error");
      }
    }
    
  • 相关阅读:
    jq实现多级手风琴效果
    css弹性盒布局
    css兼容处理
    bootstrap--双日历插件
    char*,string,char a[], const char *,之间的转换
    8.Maximum Depth of Binary Tree
    7. Minimum Depth of Binary Tree-LeetCode
    6. Reverse Linked List 逆转单链表
    5.Maximum Product Subarray-Leetcode
    卷积神经网络(Convolutional Neural Networks)CNN
  • 原文地址:https://www.cnblogs.com/loveer/p/11314759.html
Copyright © 2011-2022 走看看