使用此工作正常
@ResponseStatus(value = HttpStatus.NOT_FOUND)
@ExceptionHandler(value = IoTException.class)
public void IoTError() {
}
但是当我尝试转换为另一个自制的异常时
@ExceptionHandler(value = IoTException.class)
public void IoTError() {
throw new IoTConnectionException();
}
忽略异常处理程序,即IoTException
被发送到视图而不转换为IoTConnectionException
。但是放置一个断点显示我输入了IoTError
方法。
知道为什么吗?谢谢:))
答案 0 :(得分:1)
docs about exception handling州:
如果在请求映射期间发生异常或从请求处理程序(如@Controller)抛出异常,DispatcherServlet将委托给HandlerExceptionResolver bean链以解决异常并提供替代处理,这通常是错误响应。
在您抛出IoT异常时,已经发生了对 HandlerExceptionResolver 链的委托,并且不会再次执行。如果此异常将触发另一个异常处理调度,则可能导致异常周期。想象一下,您将为 IoTConnectionException 定义另一个异常处理程序方法,这将抛出 IoTException 。您将以 StackOverflowException 结束。
在本节中Docs Exception handler methods描述了异常处理程序方法的所有支持的返回值。