目录


概述

通常一个web框架中,有大量需要处理的异常。比如业务异常,权限不足等等。前端通过弹出提示信息的方式告诉用户出了什么错误。 通常情况下我们用try.....catch....对异常进行捕捉处理,但是在实际项目中对业务模块进行异常捕捉,会造成代码重复和繁杂, 我们希望代码中只有业务相关的操作,所有的异常我们单独设立一个类来处理它。全局异常就是对框架所有异常进行统一管理。 我们在可能发生异常的方法里throw抛给控制器。然后由全局异常处理器对异常进行统一处理。 如此,我们的Controller中的方法就可以很简洁了。

1、自定义异常

定义code、message

public class BaseException extends RuntimeException
{
    /**
     * 错误码
     */
    private String code;

    /**
     * 错误消息
     */
    private String defaultMessage;

    public BaseException(String code, String defaultMessage)
    {
        this.code = code;
        this.defaultMessage = defaultMessage;
    }

    public String getCode()
    {
        return code;
    }

    public String getDefaultMessage()
    {
        return defaultMessage;
    }
}

2、全局异常捕捉

捕获BaseException异常,返回给前端

@RestControllerAdvice
public class GlobalExceptionHandler
{
    @ExceptionHandler(BaseException.class)
    public AjaxResult baseException(BaseException e)
    {
        return AjaxResult.error(e.getDefaultMessage());
    }
}

3、手动抛出异常

在业务逻辑代码中手动抛出异常

throw new BaseException(500, "出错了");
©本文为原创文章,著作权归博主所有,转载请联系博主获得授权

发表评论