java - 使用异常进行通信

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

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

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

有人可以解释为什么它会崩溃吗?我的项目是一个spring boot项目。

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

最佳答案

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

关于异常,它应该被视为一种异常状态——不在正常的操作流程中。例如。 FileNotFoundException 异常,因为您想要打开该文件,但它不存在。您期望它在那里,但它没有。

如果您搜索产品,您不会期望它出现在一般意义上的“期望在杂货店找到一条面包”。您搜索了一堆关键字,搜索结果为空响应/零匹配。它在您的业务逻辑中并不异常(exception)。

另一方面,当您点击产品上的“订购”(比如在产品页面上),然后找不到该产品时,它是“异常(exception)”。您希望 2 分钟前找到的产品在那里,但现在不存在了。

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

自己决定。

关于java - 使用异常进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35334083/

相关文章:

c++ - 如何抛出带有可变消息的std::exceptions?

java - ManyToOne OneToMany 双向 : Retrieve data from reference table

java - Spring boot 2.3.3.RELEASE 项目在 gradle 版本 5.6.3 中构建失败,出现异常 "org.gradle.api.plugins.UnknownPluginException"

java - 有没有办法从外部将 csv/json 文件加载到 jar 中?

java - JSP 简单 IF 语句

java - 在 Play 2.3.7 上从 Promise<JsonNode> 检索 HTTP 状态

c# - 当用户输入 null 或空字符串时抛出错误

java - 实体必须被管理才能调用 remove

java - selenium-java 有时使用 firefoxdriver 运行异常

python - 循环处理错误/异常