我使用@restcontrolleradvice和@ExceptionHandler,但我可以处理控制器异常。服务器错误如404,500无法处理。
@RestControllerAdvice
public class HttpExceptionHandler {
private static final Logger logger = LoggerFactory.getLogger(HttpExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
public String exceptions(Exception e) {
String code = Global.ERR_UNKNOWN;
if (e instanceof MethodNotAllowedException) {
code = Global.ERR_HTTP_METHOD;
}
return code;
}
}
答案 0 :(得分:0)
如果你正在使用Spring Boot,这已经为你完成了,你可以很容易地自定义这种支持(参见Spring Boot reference docs)。
如果你使用的是普通的Spring Framework,那么你需要注册一个自定义的WebExceptionHandler
bean来处理它(参见Spring Framework reference docs)。因为这些错误可能在请求处理期间的任何时刻发生(即不仅在控制器处理阶段期间,而且在响应编码期间,在WebFilter
...内),API的级别相当低,您需要处理原始DataBuffer
个实例。如果您正在寻找有关如何实现更高级错误处理支持的灵感,您还可以查看at what's done in Spring Boot。