【Springboot】springboot项目的异常处理

springboot项目的异常处理

前言`

  当我们在项目的我们在前端页面中点击或者执行某些操作调用后端的某些接口出错时,在网页上是没有任何反应的,当我们没有做任何的异常处理时,我们三层架构处理异常的方案:Mapper接口在操作数据库的时候出错了,此时异常会往上抛(谁调用Mapper就抛给谁),会抛给service,如果service 中也存在异常了,会抛给controller,而在controller当中,我们也没有做任何的异常处理,所以最终异常会再往上抛。最终抛给框架之后,框架就会返回一个JSON格式的数据,里面封装的就是错误的信息,但是框架返回的JSON格式的数据并不符合我们的开发规范。所以需要在这时判断出错,并返回符合开发规范的某些信息提示用户,这就是异常处理的主要功能,下面将介绍springboot中的异常处理方法:


1. try…catch

方案一,可以在所有Controller的所有方法中进行try…catch处理

下面是一个示例代码:


     @PostMapping
    public Result insert(@RequestBody Emp emp) {
        try{
	        empService.insert(emp);
        } catch(InputMismatchException  | ArithmeticException | NullPointerException exception){
           exception.printStackTrace(); // 打印异常堆栈信息 具体为 哪个类 哪一行 什么原因出错了
           return Result.error("错误信息")
        }
        return Result.success();
    }

2.全局异常处理器

  在项目中通常含有很多的接口,如果每一个都要这样挨个进行try…catch异常处理的话,会使代码臃肿且会消耗大量的时间。
这时就有了第二种方案,全局异常处理器。
方法为:定义一个用@RestControllerAdvice(@ControllerAdvice + @ResponseBody)注解的类,在类中需要定义一个方法来捕获异常,在这个方法上需要加上注解@ExceptionHandler。通过@ExceptionHandler注解当中的value属性来指定我们要捕获的是哪一类型的异常。

下面是一个示例代码

@RestControllerAdvice
public class GlobalException {
    @ExceptionHandler(Exception.class)//捕获所有异常
    public Result ex(Exception ex){
        ex.printStackTrace();
        return Result.error("对不起,操作失败,请联系管理员!");
    }
}

  这种方法很明显简单、且代码也很简结,一个类即可处理所有的异常,当然实际开放过程中具体的异常处理方式肯定需要按情况而定。

3.结语

以上就是springboot项目中对于异常的两种处理方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值