• 统一异常管理




    import com.logistics.channel.constant.BizException;
    import com.logistics.channel.tool.CommonErrorEnum;
    import com.logistics.channel.tool.ResultBody;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.http.HttpStatus;
    import org.springframework.validation.BindException;
    import org.springframework.web.bind.MethodArgumentNotValidException;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.ResponseStatus;
    import org.springframework.web.servlet.NoHandlerFoundException;

    import javax.servlet.http.HttpServletRequest;

    @ControllerAdvice
    @Slf4j
    @ResponseBody
    public class UnifiedExceptionHandler {


    /**
    * @Author: ljh
    * @Description: 系统异常捕获处理
    * @Date: 16:07 2018/5/30
    */
    @ExceptionHandler(value = Exception.class)
    public ResultBody javaExceptionHandler(HttpServletRequest re , Exception ex) {
    log.error("捕获到Exception异常", ex);
    //异常日志入库
    return ResultBody.error(CommonErrorEnum.SERVER_BUSY);
    }

    /**
    * @Author: ljh
    * @Description: 自定义异常捕获处理
    * @Date: 16:08 2018/5/30
    */
    @ExceptionHandler(value = BizException.class)//BizException是自定义的一个异常
    public ResultBody bizExceptionHandler(BizException ex) {
    log.error("捕获到MessageCenterException异常", ex.getMessage());
    //异常日志入库

    return ResultBody.error(ex.getMessage());
    }

    /**
    * @Author: ljh
    * @Description: 自定义异常捕获处理
    * @Date: 16:08 2021/7/20
    */
    @ExceptionHandler(value = IllegalArgumentException.class)//MessageCenterException是自定义的一个异常
    public ResultBody illegalArgumentExceptionHandler(IllegalArgumentException ex) {
    log.error("捕获到IllegalArgumentException异常", ex.getMessage());
    //异常日志入库
    return ResultBody.error(ex.getMessage());
    }

    /**
    * @Author: ljh
    * @Description: 自定义异常捕获处理
    * @Date: 16:08 2021/7/20
    */
    @ExceptionHandler(value = NullPointerException.class)
    public ResultBody nullPointerExceptionHandler(NullPointerException ex) {
    log.error("捕获到NullPointerException异常", ex.getMessage());
    //异常日志入库
    return ResultBody.error(CommonErrorEnum.SERVER_BUSY);
    }

    /**
    * @Author: ljh
    * @Description: @NotBlank,@NotNull注解的message信息异常捕获处理
    * @Date: 16:08 2021/7/20
    */
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(BindException.class)
    public ResultBody exceptionHandler(BindException ex) {
    log.error("捕获到BindException异常", ex.getMessage());
    return ResultBody.error(ex.getBindingResult().getFieldError().getDefaultMessage());
    }

    /**
    * @Author: ljh
    * @Description: restful
    * @Date: 16:08 2021/7/20
    */
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(NoHandlerFoundException.class)
    public ResultBody noHandlerFoundExceptionHandler(NoHandlerFoundException ex) {
    log.error("捕获到BindException异常", ex.getMessage());
    return ResultBody.error(CommonErrorEnum.URL_ERROR);
    }

    /** @NotBlank,
    * @NotNull注解的message信息异常捕获处理
    * */
    @ExceptionHandler(value= MethodArgumentNotValidException.class)
    public ResultBody MethodArgumentNotValidHandler(HttpServletRequest request, MethodArgumentNotValidException ex) {

    log.error("捕获到MethodArgumentNotValidHandler异常:",ex.getBindingResult().getFieldError().getDefaultMessage());

    return ResultBody.error(ex.getBindingResult().getFieldError().getDefaultMessage());
    }

    }
    能力是有限的,努力是无限的。
  • 相关阅读:
    学习Java的知识体系路线(详细完整版,附图加目录)
    数组的定义和使用,理解多维数组和Array类
    Java运算符使用总结(重点:自增自减、位运算和逻辑运算)
    Java常用修饰符总结
    实例/静态变量、局部变量和常量的定义及其作用域
    Nothing is impossible
    科班学习java遇到瓶颈,每天云里雾里怎么办?
    人生路漫漫,相见不如不见
    基于视频的车辆识别
    编译原理课后习题答案令A,B和C是任意正规式,证明以下关系成立(A|B)*=(A*B*)*=(A*|B*)*
  • 原文地址:https://www.cnblogs.com/jiahaoJAVA/p/15035449.html
Copyright © 2020-2023  润新知