新建exception目录,用来进行自定义的全局异常处理。
(1)新建自定义的GlobalException基 类继承RuntimeException类,我们自定义的异常类全部需要继承GlobalException基类进行处理。
这里我们直接利用之前定义的错误码接口类。
/**
* 自定义的全局异常
*/
public class GlobalException extends RuntimeException{
private IErrorCode errorCode;
public GlobalException(String message) {
super(message);
}
public GlobalException(Throwable cause) {
super(cause);
}
public GlobalException(String message, Throwable cause) {
super(message, cause);
}
public IErrorCode getErrorCode() {
return errorCode;
}
}
(2)在exception目录下,新建GlobalExceptionHandler类,拦截异常类。文章来源:https://www.toymoban.com/news/detail-669970.html
在此类中可以捕获并将异常类转换为可接受的信息返回给前端,防止将异常直接抛出到前端。文章来源地址https://www.toymoban.com/news/detail-669970.html
/**
* 捕获并处理全局异常
*/
@ResponseBody
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 捕获并处理所有自定义异常
*/
@ExceptionHandler(value = GlobalException.class)
public HttpResult handle(GlobalException e) {
if (e.getErrorCode() != null) {
return HttpResult.fail(e.getErrorCode());
}
return HttpResult.fail(e.getMessage());
}
/**
* 捕获并处理方法参数未验证异常
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public HttpResult handleValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String message = null;
if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
if (fieldError != null) {
message = fieldError.getField()+fieldError.getDefaultMessage();
}
}
return HttpResult.validateFailed(message);
}
/**
* 捕获并处理绑定异常
*/
@ExceptionHandler(value = BindException.class)
public HttpResult handleValidException(BindException e) {
BindingResult bindingResult = e.getBindingResult();
String message = null;
if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
if (fieldError != null) {
message = fieldError.getField()+fieldError.getDefaultMessage();
}
}
return HttpResult.validateFailed(message);
}
}
到了这里,关于后端项目开发:整合全局异常处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!