zoukankan      html  css  js  c++  java
  • leyou_01_自定义异常处理器

    1.自定义异常处理器,当程序发生异常时可以我们可以自己定义返回的,状态码和状态信息

    2.当异常发生时调用我们的自定义异常

    @RestController
    @RequestMapping("item")
    public class ItemController {
        @Autowired
        private ItemService itemService;
    
        @PostMapping
        public ResponseEntity<Item> saveItem(Item item) {
            //检验价格是否为空
            if(item.getPrice()==null){
                throw new LyException(ExceptionEnum.PRICE_CANNOT_BE_NULL);//自定义异常LyException
               // return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
            }
             item = itemService.saveItem(item);
            return ResponseEntity.status(HttpStatus.CREATED).body(item);
        }
    }

    说明:throw new LyException(ExceptionEnum.PRICE_CANNOT_BE_NULL);//自定义异常LyException

    LyException()自定义异常 需要传入一个ExceptionEnum对象包含状态码,和错误信息

    防止状态码和错误形象的误传,可以以枚举的形式写好

    ExceptionEnum.class

    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    public enum ExceptionEnum {
    
        PRICE_CANNOT_BE_NULL(400, "价格不能为空!"),
        ;
        private int code;
        private String msg;
    }

    SpringMvc拦截到异常

    /**
     * 通用异常处理器
     */
    @ControllerAdvice//默认拦截所有
    public class CommonExceptionHandle {
        //方法的返回值就是返回页面的东西
        //捕获的异常
        @ExceptionHandler(LyException.class)
        public ResponseEntity<ExceptionResult> handleException(LyException e){
            ExceptionEnum em = e.getExceptionEnum();
            return ResponseEntity.status(em.getCode()).body(new ExceptionResult(e.getExceptionEnum()));
    
        }
    }

    分装一个异常返回的结果集

    /**
     * 封装一个异常处理信息的返回结果集
     */
    @Data
    public class ExceptionResult {
        private int status;
        private String message;
        private Long timestamp;
    
        public ExceptionResult(ExceptionEnum em) {
            this.status=em.getCode();
            this.message=em.getMsg();
            this.timestamp=System.currentTimeMillis();
        }
    }

     

  • 相关阅读:
    C++如何调用父类中的方法
    关于QStandardItemMode的资料
    Qt的信号和槽的使用方法练习
    Redirecting Standard I/O to Windows Console
    C++头文件的工作原理
    《深入浅出MFC》第七章 简单而完整:MFC骨干程序
    《深入浅出MFC》第六章 MFC程序的生死因果
    《深入浅出MFC》第五章 总观Application Framework
    《深入浅出MFC》第四章 Visual C++集成开发环境
    nexus使用记录
  • 原文地址:https://www.cnblogs.com/asndxj/p/11536453.html
Copyright © 2011-2022 走看看