异常处理实践 - 抛异常+错误码


前言

在业务逻辑中,通常使用两种方式处理异常:

选择哪种需要根据场景而定,不管如何选择,只要团队达成共识,统一规范就可以。

下面介绍一下我使用的处理异常的方式。

自定义异常

创建一个业务异常基类 BaseException extends RuntimeException ,为其添加两个属性:code 和 message ,并添加一些常用的构造方法。

其中, code 的作用是储存错误码,在返回前台时将错误码返回给用户。

抛出异常:

错误码管理

上面的自定义异常看起来很简单,但是不够优雅和简单。怎么将错误码和错误信息管理起来,是我们接下来要解决的问题。

我使用了 Enum ,先创建一个接口,其中包含两个方法:

下面创建一个枚举类,实现上面的接口:

观察上面的错误码枚举类,我们发现,枚举值为字母+错误码,属性 msg 为错误信息。

这样将错误码异常信息统一管理起来之后,抛出异常的代码就可优化为:

然而这样依然不够优雅,代码量比之前还要长。要是能够只传枚举值一个参数就好了,那么我们继续优化。

创建一个异常类 BusinessException extends BaseException (创建一个子类,用来接收枚举值),如下:

这样我们就可以优雅的抛出 BusinessException 了:

如果想要保留原异常信息,还可以使用:

以上就是对异常处理的封装,使用时,只需要在每个业务模块中新建一个异常枚举类,用来统一管理异常;需要时,在代码中抛出 BusinessException 即可。

统一异常处理

最后,我们再使用 @ControllerAdvice 和 @ExceptionHandler 注解做一下统一异常处理,它的作用是:

代码如下:

展开阅读全文

页面更新:2024-04-19

标签:异常   属性   优雅   接口   作用   两个   代码   方式   业务   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top