java报错空指针异常_springboot全局异常捕获,真香

全局异常捕获

什么是异常?程序在启动或者运行时没有按照预期的执行,在执行途中发生某种未知的错误,导致程序非正常停止或者报错。

在我们的程序中,肯定会伴随着很多的异常,启动时:空对象、找不到数据库、用户名密码不对等等异常,都会在程序启动时抛出异常信息,运行时:空引用、参数不匹配等等都会在程序运行时抛出异常,启动的时候抛出异常我们可以马上修改,但是程序正在运行的突然报了一个错,如果没有对这个错误做处理,用户可能会看到一堆的代码信息,很不友好,所以今天讲解一下springboot全局异常捕获。

我们先看一个程序没有做异常处理会发生什么事情,下面是一个小小的例子:

private static List list = new ArrayList();    static {        list.add("小明");        list.add("小红");        list.add(null);    }    /**     * 测试     * @return     */    @GetMapping(value = "/test")    public String test(){        for(String s: list){            if(s.equals("小红")){                log.info("听说点赞的都发财了!!!");            }else{                log.info("没点赞的好像也发财了!!!");            }        }        return "success";    }

这是一个典型的空指针异常,真正写代码的时候是不会这么干的,这里为了展示效果才这样写的,我们请求/test接口,看看会发生什么?

d8e339a5604f7129577edfa0e392cbd4.png

我靠?这是什么玩意?这要是让用户/甲方爸爸看到,那还不得被骂死?那如何解决这个问题呢?

我们将for循环这段代码加try/catch异常捕获处理。

改造后的代码:

 /**     * 测试     * @return     */    @GetMapping(value = "/test")    public String test(){        try{            for(String s: list){                if(s.equals("小红")){                    log.info("听说点赞的都发财了!!!");                }else{                    log.info("没点赞的好像也发财了!!!");                }            }        }catch (Exception e){            return "网络繁忙,请稍后再试";        }        return "success";    }

再次访问:

b55bb78536d551d48eb0ef1ae457b049.png

发现已经不是提示代码信息了,而是提示了比较友好的网络繁忙,那这个时候,你可能就会有问题了,那我岂不是需要在每个接口请求中添加一个try/catch异常捕获?这样不仅让代码的可读性变差,还会牵扯到代码的可维护性,以后接手代码的同事心里可能是崩溃的。

a73584bc142ddf099393fe73d6171bd2.png

java有没有一种统一的处理方式呢?让特定的错误返回特定的提示,java这么强大,怎么可能没有?下面我们来讲讲如何实现springboot的全局异常捕获。

我们先定义一个全局异常捕获类:GlobalExceptionRespone,由于Exception是大部分异常的大哥大,所以我们针对Exception做一个异常处理

package com.ymy.exceptions;import com.ymy.utils.ConstantUtil;import com.ymy.vo.Result;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;@Slf4j@RestControllerAdvicepublic class GlobalExceptionRespone {    /**     * 全局异常捕获     * @param e     * @return     */    @Ex
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值