目录

统一异常处理的原因

如果进行统一异常处理

1、编写统一异常处理类与方法

2、编写自定义异常类

3、定义异常枚举类

4、抛出指定异常

小提醒


统一异常处理的原因

在我们写代码的时候,因为各种场景需要进行各种校验,我们就可能会进行多种响应,多种异常返回,会出现的情况就是,满屏幕的try cache,可读性不高,所以需要进行一个统一异常处理

如果进行统一异常处理

个人觉得,进行统一异常处理的步骤,分为这么几部分

1、编写统一异常处理类与方法

@ControllerAdvice
public class ExceptionAdvice {@ExceptionHandler(MyException.class)public ResponseEntity<MyRsp> doRsp (MyException e) {return ResponseEntity.status(200).body(new MyRsp(e.getStatus(), e.getMessage()));}}@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyRsp {private String statusCode;private String statusDesc;}

这里出现了两个注解,@ControllerAdvice和@ExceptionHandler

第一个注解的作用就是,只要你加了@Controller的类,抛出了异常,就会走这个添加了@ControllerAdvice的类

第二个注解的作用,就是当前类发生了异常,就会走加了@ExceptionHandler的注解的方法

2、编写自定义异常类

@Data
@AllArgsConstructor
public class MyException extends RuntimeException{private String status;private String message;public MyException(ExceptionEnu e) {this.status = e.getCode();this.message = e.getMessage();}}

3、定义异常枚举类

@Getter
public enum  ExceptionEnu {SUCCESS("1", "成功"),FAILD("2", "失败");private String code;private String message;ExceptionEnu(String code, String message) {this.code = code;this.message = message;}
}

4、抛出指定异常

@RestController
public class OneController {@GetMapping("/doCheck")public String doCheck (int age) {if (age > 1) {throw new MyException(ExceptionEnu.SUCCESS);} else {throw new MyException(ExceptionEnu.FAILD);}}}

小提醒

当然,不是所有的情况都要进行统一异常处理,本人遇到过的好些个场景,都是不可以进行统一异常处理的,必须try cache

比如:调用一个别的服务,如果调用成功了,那就走这个流程,如果调用失败了,那就走那个流程,这个就必须用 try cache了,不能做统一异常处理,你要是做了统一异常处理,好家伙,直接这个流程结束了,这不就没得玩了

要不要做统一异常处理,这个需要结合实际业务来判断,这里不过多讨论

java中的统一异常处理相关推荐

  1. java中的异常处理代码,java_深入剖析Java中的各种异常处理方式,1. 调试追踪代码:public s - phpStudy...

    深入剖析Java中的各种异常处理方式 1. 调试追踪代码: public static void enterTryMethod() { System.out.println("enter a ...

  2. Spring 中的统一异常处理

    在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的. 因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码. 不过 ...

  3. 【SpringMVC学习07】SpringMVC中的统一异常处理

    我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.在开发中,不管是dao层 ...

  4. java中的空指针异常处理

    JAVA中的空指针异常 java中的空指针异常java.lang.NullPointerException是最麻烦的,通过个人日常总结和网上搜集整理,归纳如下,供大家参考. 空指针异常产生的主要原因如 ...

  5. 从零开始学 Java - Spring MVC 统一异常处理

    看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或者你已经练功到了孤独求败,等了半辈子 ...

  6. Java中的常用异常处理方法

    觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 ...

  7. JAVA中常用的异常处理情况

    1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...

  8. Spring MVC统一异常处理

    Spring MVC统一异常处理 一.为什么需要统一异常处理? 1.1 try catch带来的问题 平时项目中处理Controller层异常很多时候都会使用try catch去捕获异常(包括Cont ...

  9. SpringBoot 2.x 统一异常处理

    1.统一异常处理类 package cn.hadron.controller; import org.springframework.web.bind.annotation.ControllerAdv ...

最新文章

  1. fast软件_自媒体者遇见喜欢好听的视频背景音乐,用一款软件就可以把它提取...
  2. jvm六:主动使用(1.new一个对象, 2.反射)
  3. 【模型解读】resnet中的残差连接,你确定真的看懂了?
  4. 配置windows驱动开发环境
  5. 【一周入门MySQL—3】多表查询、子查询、常用函数
  6. html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
  7. 最小错误率贝叶斯决策
  8. asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
  9. crio电压采集 labview_NI cDAQ917采集温度方法
  10. LeetCode 1610. 可见点的最大数目(atan2函数求夹角)
  11. easyphp环境配置
  12. [转载] 全本张广泰——第八回 广泰欲悬梁 老侠三救徒
  13. linux系统上安装toma,Linux-tar - osc_btnnkvs0的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. flume学习(七):如何使用event header中的key值
  15. 将对象绑定到WinForm中的combobox时出现的奇怪错误:组合框的下拉项太多!
  16. Linux TCP/IP 网络工具对比:net-tools 和 iproute2
  17. matlab变压器温度仿真
  18. python第七天作业
  19. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
  20. has no attribute _TensorLike

热门文章

  1. 脚本添加ldap用户以及samba用户
  2. 杭州电子科技大学计算机录取分数,2021杭州电子科技大学录取分数线_历年各专业分数线(2017-2020),各省投档线_一品高考网...
  3. 解放双手!实用高效的语音转文字文字转语音神器,快来试试~
  4. Linux20个常用命令
  5. 最新版PHP开发手册
  6. Python错误 TypeError: ‘NoneType‘ object is not subscriptable解决方案汇总
  7. go分割字符串,按照多个字符分割。
  8. 史上最强Prompt攻略
  9. 易基因|深度综述:表观遗传机制在慢性疼痛中的作用(DNA甲基化+组蛋白修饰+非编码RNA)
  10. 浙江大华2015届校园招聘笔试题