我听说不应该使用异常进行通信。 我有一个想讨论的场景。 我们有一个休息 Controller ,它调用一个服务,该服务负责从数据库中获取产品。目前,如果找不到产品,我们将得到一个异常(已检查的异常)productNotFoundException。 这个异常一直传到 Controller 。在 Controller 中,我们有一个 Controller 异常处理程序( Controller 建议),它负责处理异常并返回 404。
有人告诉我,如果它们在不同的线程上运行,那么整个应用程序将崩溃,最好直接处理异常。目前调用了很多方法,都有throws prodNotfoundex。
有人可以解释为什么它会崩溃吗?我的项目是一个spring boot项目。
我被告知要向 Controller 返回一个空响应而不是抛出异常。
最佳答案
如果您正确处理/捕获异常,我不确定它会如何使您的应用程序崩溃。
关于异常,它应该被视为一种异常状态——不在正常的操作流程中。例如。 FileNotFoundException
异常,因为您想要打开该文件,但它不存在。您期望它在那里,但它没有。
如果您搜索产品,您不会期望它出现在一般意义上的“期望在杂货店找到一条面包”。您搜索了一堆关键字,搜索结果为空响应/零匹配。它在您的业务逻辑中并不异常(exception)。
另一方面,当您点击产品上的“订购”(比如在产品页面上),然后找不到该产品时,它是“异常(exception)”。您希望 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?
自己决定。
关于java - 使用异常进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35334083/