⁉️异常处理

web全局异常处理! 明确异常的错误信息给用户提示,不要将错误日志抛给用户看

自定义异常被全局处理器感知

自定义的异常只需要继承 BusinessException 就能被全局异常感知到了,因为异常处理器做了以下的处理


   /**
    * 处理自定义异常
    * @param e 异常
    * @return 返回异常信息
    */
   @ExceptionHandler(BusinessException.class)
   public Object handleBusinessException(BusinessException e) {
       log.error(e.getMessage(), e);
       response.setHeader(CONTENT_TYPE_HEADER_NAME, APPLICATION_JSON_UTF8_VALUE);
       return ExceptionResultWrap.error(e.getCode(), e.getErrorMessage(),null);
   }

已处理的异常如下

😱Exception

下面处理不到的异常都会走这个进行返回给前端

😱BusinessException

我们自定义的异常

😱NoHandlerFoundException

404 相关的异常 -> 路径不存在,请检查路径是否正确

😱NullPointerException

空指针异常 -> 暂时无法获取数据

😱HttpRequestMethodNotSupportedException

请求方式不对 - get post

😱HttpMessageNotReadableException

参数错误 -> 请求参数格式错误,请检查。错误消息(消息不可读)

😱MethodArgumentNotValidException

参数验证异常 -> javax.validation

😱RuntimeException

运行时异常

😱BindException

参数验证异常 -> springframework.validation

异常返回的对象

默认

接口统一返回对象

自定义

新增一个类 CustomResult 实现 com.detabes.exception.result.ExceptionResult

Last updated