我正在尝试调用保存用户信息的Web服务。实质上,返回一个'completion'对象,其中包含服务调用的结果。我的代码可以压缩如下:
public bool SaveUserInformation(ArgsList args) {
CompletionObject results = SaveService(args);
if (results.Status == Failed)
throw SomeException("onoez D:");
return true;
}
本质上,此方法返回一个布尔值,但该值永远不会为false。这对我来说有点奇怪,那么有更好的方法来解决这个问题吗?
谢谢!
答案 0 :(得分:6)
为什么不返回void
?如果抛出异常,那么你就会知道它。如果没有抛出,则表示您的函数已成功完成(返回true)。
try
{
MyFunction();
//here you know it has successfully completed
}
catch(Exception e)
{
//...
}
但是,如果你要覆盖一个返回bool的虚函数,那么你当然总能返回true,因为你必须返回一些布尔值。想想看,你也可以回复假:)
答案 1 :(得分:1)
Exception
适用于特殊情况。
Return value
用于指示调用者在被调用函数内发生的事情。
它们是完全不同的设计概念。
想要你想要的那个方法的行为是什么样的。
如果没有要通知的内容,请删除返回值。
如果有,请检查是否真的有意识处理所有异常处理。
答案 2 :(得分:1)
根据这个问题,在查看代码后,我会说是。
无论结果如何,此函数都返回true,因此其返回值没有意义。
另一方面,如果您曾尝试打开不存在的文件,那么您也会遇到异常。如果您处理了Exception并使用了默认文件或加载了默认值并且所有内容仍然有用......那么返回true将是合乎逻辑的。
你所展示的功能对使用它的人没有帮助......除非你遗漏了它。
答案 3 :(得分:0)
为什么甚至让它返回一个布尔值?您要么将错误作为true / false值返回,要么只返回任何内容并依赖异常。
答案 4 :(得分:0)
为什么不简单地返回CompletionObject
public CompletionObject SaveUserInformation(ArgsList args) {
return SaveService(args);
/*if (results.Status == Failed)
throw SomeException("onoez D:");
return true;*/
}
我无法理解bool返回值的必要性,因为它总是如此。