使用异常进行通信

Using exception for communication

我听说不应该使用异常进行通信。 我有一个想讨论的场景。 我们有一个休息控制器,它调用一个服务,该服务负责从数据库中获取产品。目前,如果找不到产品,我们将得到一个异常(已检查的异常)productNotFoundException。 这个异常一直传到控制器。在控制器中,我们有一个控制器异常处理程序(控制器建议)来处理异常和 returns 404。

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

谁能解释一下为什么会崩溃。我的项目是 spring 引导项目。

我被告知 return 对控制器的空响应而不是抛出异常。

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

关于异常,应将其视为异常 状态——这不在正常的操作流程中。例如。 FileNotFoundException 是个例外,因为您想打开该文件,但它不在那里。你期望它在那里,但它没有。

如果您搜索某个产品,您不会期望它会出现在 "expecting to find a loaf in the grocery store" 的一般意义上。您搜索了一堆关键字,搜索结果为空的 response/zero 匹配项。它在您的业务逻辑中并不例外。

另一方面,当您在产品上单击 "order"(比如在产品页面上),然后 然后 找不到该产品时,它是 "exceptional"。您希望 2 分钟前找到的产品在那里,但现在不存在了。

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

自己决定。