首页 > 经验记录 > SpringBoot统一异常处理

SpringBoot统一异常处理

自定义异常以及异常信息类:

package top.yibobo.hospital.exception;
public class HospitalException extends Exception {
    public HospitalException(String message){
        super(message);
    }
}

 

package top.yibobo.hospital.domain;
public class ErrorInfo<T> {
    public static final int OK = 0;
    public static final int ERROR = 100;
    private int code;
    private String message;
    private String url;
    private T data;
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
}

 
最关键的:统一异常处理,做异常处理的好处就是前台访问服务器时出现异常时
只会返回自定义的异常信息JSON
不会对其他功能造成影响

package top.yibobo.hospital.controller;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import top.yibobo.hospital.domain.ErrorInfo;
import top.yibobo.hospital.exception.HospitalException;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice//只要Controller出现异常,就会由这个类来处理
public class ExcptionController {
    @ResponseBody
    @ExceptionHandler(value = HospitalException.class)//对HospitalException这个异常进行处理
    public ResponseEntity<?> hanlerExcption(HttpServletRequest request,
                                            HospitalException e)throws Exception{
        ErrorInfo<String> error = new ErrorInfo<>();
        error.setCode(ErrorInfo.ERROR);
        error.setMessage(e.getMessage());
        error.setUrl(request.getRequestURL().toString());
        error.setData("some data");
        return new ResponseEntity<ErrorInfo>(error, HttpStatus.OK);
    }
}

 

           


CAPTCHAis initialing...
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00