美文网首页
springboot全局异常处理类

springboot全局异常处理类

作者: writeanewworld | 来源:发表于2019-09-30 14:42 被阅读0次

    1.注解

    主要是用了个 @RestControllerAdvice 注解。拦截controller层的异常统一处理

    1. 代码
    写个GlobalExceptionHandler:
    
    @RestControllerAdvice
    public class GlobalExceptionHandler {
    private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    
    @ExceptionHandler(Throwable.class)
    public BaseResponse handler(HttpServletRequest request, Throwable e) {
    
        if (e instanceof MethodArgumentNotValidException) {
            MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
            String errMsg = ex.getBindingResult().getFieldError().getDefaultMessage();
            return ResponseTools.newErrorResponse(101, errMsg);
        } else if (e instanceof NoHandlerFoundException) {
            return ResponseTools.newErrorResponse(404, "请求资源不存在!");
        } else if (e instanceof BindException) {
            BindException ex = (BindException) e;
            String errMsg = ex.getBindingResult().getFieldError().getDefaultMessage();
            return ResponseTools.newErrorResponse(102, errMsg);
        } else if (e instanceof ServletRequestBindingException) {
            ServletRequestBindingException ex = (ServletRequestBindingException) e;
            return ResponseTools.newErrorResponse(105, ex.getMessage());
        } else if (e instanceof HttpRequestMethodNotSupportedException) {
            HttpRequestMethodNotSupportedException ex = (HttpRequestMethodNotSupportedException) e;
            return ResponseTools.newErrorResponse(405, "请求方法不支持" + ex.getMethod());
        } else if (e instanceof Exception) {
            logger.error("未知异常 {}", e.getMessage(), e);
            return ResponseTools.newErrorResponse(ReturnCode.UNKNOW_REEOR);
        }
        return ResponseTools.newErrorResponse(ReturnCode.UNKNOW_REEOR);
    }
    }
    

    相关文章

      网友评论

          本文标题:springboot全局异常处理类

          本文链接:https://www.haomeiwen.com/subject/pteructx.html