【问题标题】:Return boolean true if no exception was thrown indicating operation was successful?如果没有抛出异常指示操作成功,则返回布尔值 true?
【发布时间】:2012-08-04 22:33:54
【问题描述】:

即使抛出所有可能的异常,方法(远程方法调用)是否应该返回布尔值true 指示操作成功执行?

示例:

在我的 java 应用程序中有许多 CRUD 远程方法调用,我捕获所有可能的异常并向调用客户端抛出自定义异常。

我现在应该返回 void 还是布尔值,因为 Exceptions 已经隐式指示操作的成功或失败?

【问题讨论】:

    标签: java exception-handling return throws


    【解决方案1】:

    我建议返回 void。

    如果你返回一个布尔值,调用代码必须猜测“哦,我应该检查布尔值还是检查异常?或者两者都做?”

    【讨论】:

      【解决方案2】:

      在这种情况下返回 void,而不是 boolean

      例外是针对特殊情况。为什么要在两个不同的通道上指示操作的成功或失败之类的东西? DRY 原则告诉我们:

      不要重复自己

      我只会使用布尔值来表示更多信息,就像有时在集合上所做的那样,报告是否找到了要删除的项目。

      【讨论】:

        【解决方案3】:

        当对所有错误条件使用异常时,只有当方法有实际有用的数据要返回时才返回一个值。

        如果您没有要返回的有用信息,请使用 void。

        【讨论】:

          【解决方案4】:

          我认为这是一个方便的问题。您已经抛出自定义异常这一事实有助于识别确切的错误(如果有)。

          但是,有时,您可能会发现使用以下表达式很方便:

            if(method()){
               ... 
            }
          

          因此,返回布尔值可能很有用。

          最后,两者(抛出异常并返回布尔值)并不相互排斥

          【讨论】:

            猜你喜欢
            • 2018-03-24
            • 1970-01-01
            • 1970-01-01
            • 2017-01-12
            • 2023-03-28
            • 2011-10-18
            • 1970-01-01
            • 1970-01-01
            • 2014-04-13
            相关资源
            最近更新 更多