• 异常处理


    @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()方法来处理异常。

  • 相关阅读:
    sharepoint tip (视图)
    how to use mstsclib
    Why I Love My Virtual PCs
    科普 | 什么是去中心化自治组织(DAO)
    毕业生的商业软件开发之路 C#基本语法C#代码模块逻辑框架
    文本编辑器中文字断行及排版算法研究
    [毕业生的商业软件开发之路]C#异常处理
    毕业生的商业软件开发之路关于企业培训
    开源C#2.0体温单程序
    论电子病历文本编辑器
  • 原文地址:https://www.cnblogs.com/yangfei-beijing/p/7651346.html
Copyright © 2020-2023  润新知