SpringBoot 全局异常处理
- 步骤
1 引入异常类
2 添加处理异常方法
3 扫描该类
4 抛出相对应的异常
package com.ericsson.cv.devicemgmt.api.interceptor;
import com.ericsson.cv.devicemgmt.api.entiry.BaseResponse;
import com.ericsson.cv.devicemgmt.api.entiry.ErrorResponse;
import com.ericsson.cv.devicemgmt.api.exception.UnauthorizedException;
import javassist.NotFoundException;
import org.springframework.http.HttpStatus;
import org.springframework.web.HttpMediaTypeNotSupportedException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.client.HttpServerErrorException;
import javax.naming.ServiceUnavailableException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServletRequest;
/**
SpringBoot Exception Interceptor
@author eaninfj
*/
@RestControllerAdvice
public class ExceptionControllerAdvice {
/**
* UnauthorizedException
*/
@ResponseStatus(HttpStatus.UNAUTHORIZED)
@ExceptionHandler(UnauthorizedException.class)
public ErrorResponse handle401() {
return new ErrorResponse(401,"Access Defined ");
}
/**
* 404 - Not Found
*/
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(NotFoundException.class)
public ErrorResponse handle404() {
return new ErrorResponse(404,"Resource Not Found");
}
/**
* 405 - Method Not Allowed
*/
@ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public ErrorResponse handle405(HttpRequestMethodNotSupportedException e) {
return new ErrorResponse(405,"Method Not Allowed");
}
/**
* 415 - Unsupported Media Type
*/
@ResponseStatus(HttpStatus.UNSUPPORTED_MEDIA_TYPE)
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
public ErrorResponse handle415() {
return new ErrorResponse<>(415,"Unsupported Media Type");
}
/**
* 500 - INTERNAL SERVER ERROR
*/
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(HttpServerErrorException.class)
public ErrorResponse handle500() {
return new ErrorResponse(500,"INTERNAL SERVER ERROR");
}
/**
* 503 - Internal Server Busy
*/
@ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)
@ExceptionHandler(ServiceUnavailableException.class)
public ErrorResponse handle503() {
return new ErrorResponse(503,"Internal Server Busy");
}
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse globalException() {
return new ErrorResponse(400,"Bad Request");
}
}
触发异常
throw new ShiroException();
结果