并非所有异常都映射到SimpleMappingExceptionResolver中的resolveException


问题内容

我重写resolveExceptionSimpleMappingExceptionResolver,以发送一封电子邮件,其中工程500错误,但一个400错误不会在这个方法到达堆栈跟踪。(没有要发送的stacktrace,但我仍然想发送电子邮件并显示一个不错的错误页面。)

有没有办法做到这一点,或者我应该只将我的web.xml配置为处理400个(或类似名称)吗?


问题答案:

TL; DR SpringExceptionResolvers不能处理所有异常,而只能处理Controller抛出的异常。当Spring无法为映射的控制器转换您的提交数据时,可能会引发“400-Bad Request”,并且它抛出的异常将永远不会被ExceptionHandler看到。

您的web.xml解决方案应该可以正常工作。