根据Servlet规范 :
一个servlet或过滤器可以请求的处理过程中抛出以下例外:
- 运行时异常或错误
- ServletExceptions或其亚类
- 的IOExceptions或其亚类
如果我们看一下org.springframework.web.servlet.FrameworkServlet#processRequest
,我们将看到Spring抛出ServletException
和IOException
,但其他包装包括RuntimeExceptions
:
try {
doService(request, response);
} catch (ServletException | IOException ex) {
failureCause = ex;
throw ex;
} catch (Throwable ex) {
failureCause = ex;
throw new NestedServletException("Request processing failed", ex);
}
为什么没有春天处理RuntimeException
像IOException
?