Я играю с SimpleMappingExceptionResolver, чтобы посмотреть, как он работает, и посмотреть, пригодится ли он нам для клиента, но у меня возникли проблемы с его пониманием.
Я пытался посетить определенную страницу в моем приложении и вызвать ее исключение в методе handleRequestInternal.
Когда я выбрасываю RecoverableDataAccessException (подкласс DataAccessException), тогда корректная страница ошибки отображается, как и ожидалось.
Когда я выбрасываю исключение freemarker.core.InvalidReferenceException или java.lang.NumberFormatException, на страницу выводится исключение, и отображается страница ошибки 500 по умолчанию (т. Е. Без стиля).
Ниже я использую отображение.
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">/general/error/500</prop>
<prop key="freemarker.core.InvalidReferenceException">/general/error/500</prop>
<prop key="NumberFormatException">/general/error/500</prop>
</props>
</property>
<property name="defaultErrorView" value="/general/error/500" />
</bean>
Я, по крайней мере, ожидал, что представление ошибок по умолчанию получит исключение и отобразит страницу с моей конкретной ошибкой, но этого не происходит.
Правильно ли я здесь использую SimpleMappingExceptionHandler?
[править] Я использую причал.
[править] Я понял, что SMER не обрабатывает ошибки, возникающие во время рендеринга, что объясняет, почему он не может отследить те, с которыми у меня возникли проблемы. Можно ли заставить SMER справиться с 500 ошибками стиля?