方法(远程方法调用)是否应返回一个布尔true
值,表示即使抛出所有可能的异常,操作也会成功执行?
示例:
在我的java应用程序中有许多CRUD远程方法调用,我捕获所有可能的异常并向调用客户端抛出自定义异常。
我现在应该返回void还是布尔值,因为Exceptions已经隐含地指示了操作的成功或失败?
答案 0 :(得分:5)
我建议归还无效。
如果你返回一个布尔值,调用代码必须猜测“哦,我应该检查布尔值还是检查异常?或者两者都可以?”
答案 1 :(得分:4)
在这种情况下,请返回void
,而不是boolean
。
例外情况适用于特殊情况。为什么要在两个不同的通道上指出操作的成功或失败? DRY原则告诉我们:
不要重复自己
我只会使用布尔值来指示进一步的信息,就像有时在集合上做的那样,报告是否找到了要删除的项目。
答案 2 :(得分:1)
对所有错误条件使用异常时,如果方法具有要返回的实际有用数据,则仅返回值。
如果您没有要返回的有用信息,请使用void。
答案 3 :(得分:0)
我认为这是一个方便的问题。您已经抛出自定义异常的事实有助于识别确切的错误(如果有)。
但是,有时候,您可能会发现使用以下表达式很方便:
if(method()){
...
}
因此,返回布尔值可能很有用。
最后,两个(抛出异常并返回一个布尔值)不会相互排斥