使用异常进行通信

时间:2016-02-11 08:21:36

标签: java exception-handling spring-boot spring-restcontroller

我听说不应该使用例外来进行沟通。 我有一个我想讨论的场景。 我们有一个rest控制器,它调用一个负责从数据库中获取产品的服务。目前,如果找不到产品,我们将获得异常(已检查异常)productNotFoundException。 此异常一直持续到控制器。在控制器中,我们有一个控制器异常处理程序(控制器通知),负责处理异常并返回404.

有人告诉我,如果它们在不同的线程上运行,那么整个应用程序都会崩溃,最好直接处理异常。目前正在调用很多方法,所有方法都抛出prodNotfoundex。

有人可以解释为什么它会崩溃。我的项目是一个春季启动项目。

我被告知要向控制器返回一个空响应而不是抛出异常。

1 个答案:

答案 0 :(得分:2)

如果您正确处理/捕获异常,我不确定它会如何使您的应用程序崩溃。

关于异常,应将其视为例外状态 - 这不在正常的操作流程中。例如。 FileNotFoundException是例外,因为你想打开文件,但它不在那里。你期望它存在,但事实并非如此。

如果你搜索一种产品,你不会指望它会在“期望在杂货店找到一块面包”的一般意义上存在。您搜索了一堆关键字,搜索结果为空响应/零匹配。它在您的业务逻辑中并不例外。

另一方面,当您点击产品上的“订单”(例如在产品页面上),然后然后找不到产品时,它就是“例外”。你期望在2分钟前找到的产品在那里,但现在已经不存在了。

Java异常处理成本的一些链接:

自己决定。