java中的统一异常处理
目录
统一异常处理的原因
如果进行统一异常处理
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中的统一异常处理相关推荐
- java中的异常处理代码,java_深入剖析Java中的各种异常处理方式,1. 调试追踪代码:public s - phpStudy...
深入剖析Java中的各种异常处理方式 1. 调试追踪代码: public static void enterTryMethod() { System.out.println("enter a ...
- Spring 中的统一异常处理
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的. 因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码. 不过 ...
- 【SpringMVC学习07】SpringMVC中的统一异常处理
我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.在开发中,不管是dao层 ...
- java中的空指针异常处理
JAVA中的空指针异常 java中的空指针异常java.lang.NullPointerException是最麻烦的,通过个人日常总结和网上搜集整理,归纳如下,供大家参考. 空指针异常产生的主要原因如 ...
- 从零开始学 Java - Spring MVC 统一异常处理
看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或者你已经练功到了孤独求败,等了半辈子 ...
- Java中的常用异常处理方法
觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 ...
- JAVA中常用的异常处理情况
1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...
- Spring MVC统一异常处理
Spring MVC统一异常处理 一.为什么需要统一异常处理? 1.1 try catch带来的问题 平时项目中处理Controller层异常很多时候都会使用try catch去捕获异常(包括Cont ...
- SpringBoot 2.x 统一异常处理
1.统一异常处理类 package cn.hadron.controller; import org.springframework.web.bind.annotation.ControllerAdv ...
最新文章
- fast软件_自媒体者遇见喜欢好听的视频背景音乐,用一款软件就可以把它提取...
- jvm六:主动使用(1.new一个对象, 2.反射)
- 【模型解读】resnet中的残差连接,你确定真的看懂了?
- 配置windows驱动开发环境
- 【一周入门MySQL—3】多表查询、子查询、常用函数
- html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
- 最小错误率贝叶斯决策
- asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
- crio电压采集 labview_NI cDAQ917采集温度方法
- LeetCode 1610. 可见点的最大数目(atan2函数求夹角)
- easyphp环境配置
- [转载] 全本张广泰——第八回 广泰欲悬梁 老侠三救徒
- linux系统上安装toma,Linux-tar - osc_btnnkvs0的个人空间 - OSCHINA - 中文开源技术交流社区...
- flume学习(七):如何使用event header中的key值
- 将对象绑定到WinForm中的combobox时出现的奇怪错误:组合框的下拉项太多!
- Linux TCP/IP 网络工具对比:net-tools 和 iproute2
- matlab变压器温度仿真
- python第七天作业
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
- has no attribute _TensorLike
热门文章
- 脚本添加ldap用户以及samba用户
- 杭州电子科技大学计算机录取分数,2021杭州电子科技大学录取分数线_历年各专业分数线(2017-2020),各省投档线_一品高考网...
- 解放双手!实用高效的语音转文字文字转语音神器,快来试试~
- Linux20个常用命令
- 最新版PHP开发手册
- Python错误 TypeError: ‘NoneType‘ object is not subscriptable解决方案汇总
- go分割字符串,按照多个字符分割。
- 史上最强Prompt攻略
- 易基因|深度综述:表观遗传机制在慢性疼痛中的作用(DNA甲基化+组蛋白修饰+非编码RNA)
- 浙江大华2015届校园招聘笔试题