Я не смог найти хорошего решения: в моем приложении Spring Boot, как метод @ExceptionHandler
, мне нужно определить обработчик не для конкретного исключения, а для любого исключения , вызванного конкретное исключение (т. Е. Обернутое исключение).
Пример: Иногда я получаю это:
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:541) ~[spring-orm-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746) ~[spring-tx-5.1.4.RELEASE.jar:5.1.4.RELEASE]
... 121 common frames omitted
Caused by: custom.TechRoleException: My custom TechRoleException
at myapp.method1[..]
at myapp.methodOuter[..]
Мой пользовательский TechRoleException
- это исключение, которое я выбрасываю в некоторый HibernateМетод предварительного обновления EventListener, и прямое исключение состоит в том, что постоянство не может возникнуть.
Однако следующий метод, который пытается использовать мое пользовательское исключение, никогда не достигается:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(TechRoleException.class)
public String techRoleException(HttpServletRequest request, Exception ex) {
System.out.println("Got here");
return "home";
}
}
Вотпохожая тема, где ответ неправильный и не отвечает на этот вопрос: @ ExceptionHandler для Wrapped Exception / getCause () в Spring