【发布时间】:2012-11-02 17:00:12
【问题描述】:
我正在使用 Spring 编写一个 REST 应用程序。它分为3层,控制器、服务和存储库。
存储库层使用 Spring 数据和 MongoDb。来自 MongoDb 的异常被转换为 Spring Data 异常。
使用@ExceptionHandler 注释,我尝试在存储库层捕获这些异常。这没有用。使用@ExceptionHandler 捕获异常的唯一方法是将代码放在控制器层中。
有没有办法让我在不使用 try/catch 块的情况下捕获和处理存储库层中的异常。
【问题讨论】:
-
抛出这些异常的是存储库层(即存储库周围的 Spring 代理),所以我看不出如何在存储库层中捕获这些异常。到底有什么意义呢?
-
尽可能接近原点处理异常。
-
在这种情况下,这意味着在异常被抛出之前捕获它。您可以在服务层中捕获它们,但有什么意义呢?除了默认所做的事情(回滚事务并传播异常)之外,您还能做任何事情吗?
-
如何在不使用 try/catch 块的情况下在服务层捕获它们?
-
我不知道,因为我还是不明白你为什么要捕获异常。