【问题标题】:Using exception for communication使用异常进行通信
【发布时间】:2016-02-11 08:21:36
【问题描述】:

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

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

谁能解释一下它为什么会崩溃。我的项目是一个spring boot项目。

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

【问题讨论】:

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


    【解决方案1】:

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

    关于异常,它应该被视为一种异常状态——它不在正常的动作流程中。例如。 FileNotFoundException 是例外,因为您想打开文件,但它不存在。你预计它会在那里,但事实并非如此。

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

    另一方面,当您在产品上(例如在产品页面上)单击“订购”时,然后找不到该产品,这是“异常”。您预计 2 分钟前找到的产品会在那里,但现在已经不在了。

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

    自己决定。

    【讨论】:

    • “期待在杂货店找到一条面包”如果你找不到,那是个例外
    • 这是一个棘手的问题。我进入商店希望他们有一个(例如,因为他们宣传自己是“总是有新鲜面包”,所以我希望面包有现货)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多