• 异常处理


    @RestController
    @RequestMapping("/exceptoin")
    public class ExceptionController{
        @Autowired
        private LablesService lablesService;
        private static final Logger log = LoggerFactory.getLogger(ExceptionController.class);
        @RequestMapping("/get")
        public String test(Long id){
            Lables lable = lablesService.selectById(id);
            if(lable == null) {
                throw new SourceNotFindException();
            }
            log.info("id:" + id);
            return lable.toString();
        }
        @ExceptionHandler(SourceNotFindException.class)
        public String handlerSource() {
            return "source is null,please input the source!";
        }
    }
    /**
     * @ResponseStatus注解将异常映射为HTTP状态码。
     * @author YF
     *
     */
    @ResponseStatus(value = HttpStatus.NOT_FOUND,reason = "source not find")
    public class SourceNotFindException extends RuntimeException{
        private static final long serialVersionUID = -6152421773125413417L;
        
    }

     以上方法只能处理同一控制器中所有方法抛出的指定异常,如果要处理所有控制器中方法抛出的异常就需要将处理方法定义到控制器通知类中。

    控制器通知

    @ExceptionHandler注解标注的方法;
    @InitBinder注解标注的方法;
    @ModelAttribute注解标注的方法。

    带有ControllerAdvice注解的类中,以上所述的这些方法会运用到整个应用程序所有控制器中带有@RequestMapping注解的方法上。

    @ControllerAdvice最为实用的一个场景就是将所有的@ExceptionHandler方法收集到一个类中,这样所有控制器的异常就能在一个地方进行一致的处理。

    @ControllerAdvice
    public class ExceptionHandler {
        @org.springframework.web.bind.annotation.ExceptionHandler(SourceNotFindException.class)
        public String sourceNotNull() {
            return "source is null!";
        }
    }

    现在,如果任意的控制器方法抛出了DuplicateSpittleException,不管这个方法位于哪个控制器中,都会调用这个duplicateSpittleHandler()方法来处理异常。

  • 相关阅读:
    Android音视频学习第7章:使用OpenSL ES进行音频解码
    使用cordova+Ionic+AngularJs进行Hybird App开发的环境搭建手冊
    简单脱壳教程笔记(8)---手脱EZIP壳
    linux CentOS安装telnet
    【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
    C# 爬取网页上的数据
    ML(1): 入门理论
    ES(6): access elasticsearch via curl
    ES(5): ES Cluster modules settings
    ES(4): ES Cluster Security Settings
  • 原文地址:https://www.cnblogs.com/yangfei-beijing/p/7651346.html
Copyright © 2020-2023  润新知