@ExceptionHandler全局异常处理--代码更精简易懂

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014643282/article/details/80817932

采用springmvc框架搭建的项目,为提高web项目代码可读性,复用率。记录一下关于项目中异常的统一处理。

1、当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@ExceptionHandler注解的那个方法中。

例如在一个controller中加入以下代码我们便可省去繁杂的每个方法中的try{}catch{}:

    @ExceptionHandler
    public ServiceStatus exp(HttpServletResponse response, Exception ex) {
        response.setStatus(500);
        LOG.error("Gloal exception Handler", ex);
        return new ServiceStatus(ServiceStatus.Status.Fail, ex.getMessage());
    }
ServiceStatus实体:
public class ServiceStatus {

    private Status status;
    private String msg;
    private Long id;
    public ServiceStatus(Status status, String msg) {
        this.status = status;
        this.msg = msg;
    }
    public ServiceStatus(Status status, String msg, Long id) {
        this.status = status;
        this.msg = msg;
        this.id = id;
    }
    public enum Status {
        Success(1), Fail(2);
        private int status;
        Status(int status) {
            this.status = status;
        }
        public int getStatus() {
            return status;
        }
        public String toString() {
            return  new Integer(this.status).toString();
        }
    }
    public String getStatus() {
        return status.toString();
    }
    public void setStatus(Status status) {
        this.status = status;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
}

2、我们可以更抽象对整个项目的异常进行统一处理。

@ControllerAdvice + @ExceptionHandler配合使用

可参考博客:https://blog.csdn.net/kinginblue/article/details/70186586






阅读更多
换一批

没有更多推荐了,返回首页