系统搭建之异常处理

                                          异常处理


我们在构建一个系统的时候,除了技术栈的选择之外,其实异常处理有时候对于我们也是异常的重要,因为我们可以减少工作量,同时可以方便快速排查错误.

首先我们可以将异常分为:自定义异常跟非自定义异常。自定义异常,我们其实就是根据自己系统的业务异常,而非自定义异常就是spring的异常。

针对自定义异常,我们是新建自定义异常类,继承runtimeException,不是继承Exception的原因是减少代码注入,然后再自定义异常类的带参构造中构造跟前端定义好的错误类。


然后就是如何捕获异常了,针对springboot,我们可以使用控制器增强器@ControllerAdvice(该注解打在类上),然后定义一个方法,在方法上需要打上@ExceptionHandler(自定义异常类.class) ,那么在将来该异常被抛出的时候就会执行该方法,我们可以针对性的返回对应的出参.

针对spring的异常,我们可以定义方法,打上@ExceptionHandler(Exception.class),然后再该方法内判断对应的异常,返回对应的出参,至于如何判断对应的异常,我们可以提前将一些spring的异常放入到一个Map中,这里我们可以使用谷歌的guava的ImmutableMap,为什么使用?


 指的是:不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。

  为什么要用immutable对象?immutable对象有以下的优点:
    1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象
    2.线程安全的:immutable对象在多线程下安全,没有竞态条件
    3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)
    4.可以被使用为一个常量,并且期望在未来也是保持不变的


然后我们从map中取到对应的异常,然后抛出对应的出参.


<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值