目录
概述
通常一个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, "出错了");
最新回复