Spring\Springboot 全局异常处理

项目当中我们经常会处理异常,所以需要在代码中try..catch。这样就会造成两个问题:1.把后台的报错直接给前端 页面不美观 2.我们频繁的写try..catch也挺麻烦,所以我们需要用到全局异常处理,全局异常处理有很多种办法 今天用的是spring的全局异常处理,话不多说 直接上代码!

1.如果需要自定义异常的 请参考

public class BaseException extends Exception {
    /**
     *  自定义认证异常
     */
    public AuthorizeException(String message){
        super(message);
    }
}

2.如果不需要自定义异常 直接设置全局异常

/**
 * 全局异常处理器
 */
@RestControllerAdvice
public class GlobalExceptionHandler
{
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    

    /**
     * 空指针异常
     */
    @ExceptionHandler(NullPointerException.class)
    public AjaxResult businessException(NullPointerException e)
    {
        if (StringUtils.isNull(e.getCode()))
        {
            return Result.error(e.getMessage());
        }
        return Result.error(e.getCode(), e.getMessage());
    }

    /**
     * 其他异常
     */
    @ExceptionHandler(Exception.class)
    public AjaxResult handleException(Exception e)
    {
        log.error(e.getMessage(), e);
        return Result.error(HttpStatus.ERROR,"系统异常");
    }

    /**
     * 自定义验证异常
     */
    @ExceptionHandler(PreAuthorizeException.class)
    public AjaxResult preAuthorizeException(PreAuthorizeException e)
    {
        return Result.error("没有权限,请联系管理员授权");
    }
}

3.测试

 
@RestController
@RequestMapping("/test")
public class GlobalController {
    @RequestMapping("/testError")
    public ResponseEntity<?> testError() {
        //代码中可以加一个判断 直接throw出异常
        throw new HospitalException("测试类");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值