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();
}
}

最新文章

  1. Kali对wifi的破解记录
  2. C# Mvc异常处理过滤器
  3. JavaScript高级-定义函数(类)方法
  4. 内核移植和文件系统制作(2):linux内核最小系统和initramfs文件系统
  5. C# Socket编程笔记(转)
  6. Linux /bin、/sbin、/usr/bin、/usr/sbin目录的区别
  7. [C#参考]委托机制
  8. rsync服务器
  9. 《Django By Example》第六章 中文 翻译 (个人学习,渣翻)
  10. postfix+dovecot配置多域名邮件服务器
  11. Ext Js详解指南
  12. linux下安装node
  13. Timer类的schedule和scheduleAtFixedRate 简单应用
  14. Windows XP Services
  15. 漏测BUG LIst
  16. log4j2.xml日志文件设置文件路径
  17. LeetCode OJ 102. Binary Tree Level Order Traversal
  18. [20171211][转载]如何实现dbms_output输出没有打开serveroutput on.txt
  19. codefroces 266
  20. curl命令基本使用小总结

热门文章

  1. day20 装饰器补充
  2. 查看linux的登录日志
  3. JAVA基础_泛型
  4. java中 ++a 与 a++ 的区别
  5. 20.multi_case06
  6. java-day08
  7. &lt;Django&gt;socket简单实现django简化版
  8. Ip- Linux必学的60个命令
  9. 【BZOJ4916】神犇与蒟蒻
  10. Java jmx的使用