我不知道这种方法是否最好。但是我有一个要求,我需要处理 Spring JPA 存储库(DAO 层)异常。从某种意义上说,处理可能是将其传播到 UI,或者可能是在服务层执行一些逻辑。
现在根据来自多个存储库的当前情况,我们所有的 SQL 异常都被包装到运行时异常 DataAccessException 中。
如果我想将此异常传播到我的 UI 层,现在有一种方法是在服务层捕获此运行时异常并将此异常包装到我的自定义异常中,然后传播它。但是我不想捕获这个运行时异常。有什么方法可以覆盖 Spring JPA 的异常翻译器行为,并将所有 SQL 异常包装到我的 Custom Checked 异常中吗?如果我能够做到这一点,我认为这种方法更好。
最佳答案
关于 TransactionSystemException 的问题:在退出 @Transactional 方法 时抛出此异常,以指示事务已回滚。
如果你想可靠地捕获约束违规,你需要围绕事务而不是在事务内部进行。例如,通过在 saveUser()
方法而不是 @Transactional
中使用编程事务划分,或者通过将 try-catch 子句添加到顶级方法。
或者你应该访问
关于java - 如何覆盖默认的 Spring JPA 异常翻译器行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434853/