美文网首页
springboot 统一异常处理方式

springboot 统一异常处理方式

作者: 狂奔如风 | 来源:发表于2020-07-16 15:40 被阅读0次

    一、使用注解@ControllerAdvice  对Controller 增强,创建全局异常处理类

    import com.kejiang.qyzbt.bffc.enums.ErrorResultEnum;

    import com.ocean.common.dto.ApiResponse;

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    import org.springframework.web.bind.annotation.ControllerAdvice;

    import org.springframework.web.bind.annotation.ExceptionHandler;

    import org.springframework.web.bind.annotation.ResponseBody;

    import javax.servlet.http.HttpServletRequest;

    /**

    * controller 层异常捕获统一处理

    * @author 作者 E-mail: songfz

    * @version 1.0

    * @date 创建时间:2018年7月10日 下午3:55:32

    * @parameter

    * @return

    * @since

    */

    @ControllerAdvice

    public class GlobalExceptionHandler {

      private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

      /**

        * 系统异常处理,比如:404,500

        *

        * @param req

        * @param e

        * @return

        * @throws Exception

        */

      @ExceptionHandler(value = Exception.class)

      @ResponseBody

      public ApiResponse<?> defaultErrorHandler(HttpServletRequest req, Exception e){

          logger.error("异常:" + e.getMessage(), e);

          ApiResponse baseResp = new ApiResponse();

          baseResp.setMsg(e.getMessage());

          if (e instanceof ExecuteException) {

            baseResp.setCode(ErrorResultEnum.getCode(e.getMessage()));

          } else {

            baseResp.setCode(ErrorResultEnum.FAIL.getCode());

          }

          return baseResp;

      }

    }

    二、自定义异常对象

    public class ExecuteException extends RuntimeException {

      /**

        *

        */

      private static final long serialVersionUID = 1L;

      private String message;

      @Override

      public String getMessage() {

          return message;

      }

      public void setMessage(String message) {

          this.message = message;

      }

      public ExecuteException() {

          super();

      }

      public ExecuteException(String message) {

          super();

          this.message = message;

      }

    }

    三  controller层 不捕获异常向上抛出异常

    相关文章

      网友评论

          本文标题:springboot 统一异常处理方式

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