使用异常进行通信
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异常处理成本的一些链接:
- http://java-performance.info/throwing-an-exception-in-java-is-very-slow/
- Is it expensive to use try-catch blocks even if an exception is never thrown?
- How expensive are Exceptions
- How slow are Java exceptions?
自己决定。
我听说不应该使用异常进行通信。 我有一个想讨论的场景。 我们有一个休息控制器,它调用一个服务,该服务负责从数据库中获取产品。目前,如果找不到产品,我们将得到一个异常(已检查的异常)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异常处理成本的一些链接:
- http://java-performance.info/throwing-an-exception-in-java-is-very-slow/
- Is it expensive to use try-catch blocks even if an exception is never thrown?
- How expensive are Exceptions
- How slow are Java exceptions?
自己决定。