话不多说,直接上代码:
添加此类即可
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import lombok.extern.slf4j.Slf4j;
/**
* @author cq
*/
@ControllerAdvice
@Slf4j
public class ExceptionControllerAdvice {
@ResponseBody
@ExceptionHandler(value = IllegalArgumentException.class)
public MessageResult myErrorHandler(IllegalArgumentException e) {
e.printStackTrace();
log.info(">>>拦截参数异常>>", e);
MessageResult result = MessageResult.error(e.getMessage());
return result;
}
@ResponseBody
@ExceptionHandler(value = ServletRequestBindingException.class)
public MessageResult myErrorHandler(ServletRequestBindingException e) {
e.printStackTrace();
log.info(">>>拦截绑定参数异常>>", e);
MessageResult result = MessageResult.error(3000, "参数绑定错误(如:必须参数没传递)!");
return result;
}
@ResponseBody
@ExceptionHandler(value = Exception.class)
public MessageResult myErrorHandler(Exception ex) {
ex.printStackTrace();
log.info(">>>拦截异常>>", ex);
MessageResult result = MessageResult.error("未知错误");
return result;
}
@ResponseBody
@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
public MessageResult httpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException ex) {
ex.printStackTrace();
log.info(">>>错误请求方式异常>>", ex);
String methods = "";
// 支持的请求方式
String[] supportedMethods = ex.getSupportedMethods();
for (String method : supportedMethods) {
methods += method;
}
MessageResult result = MessageResult.error(
"Request method " + ex.getMethod() + " not supported !" + " supported method : " + methods + "!");
return result;
}
}