当前位置:  开发笔记 > 编程语言 > 正文

如何表明方法不成功

如何解决《如何表明方法不成功》经验,为你挑选了3个好方法。

我有几种类似的方法,例如.CalculatePoint(...)和CalculateListOfPoints(...).有时,它们可能不会成功,并且需要向呼叫者指出这一点.对于返回通用List的CalculateListOfPoints,我可以返回一个空列表并要求调用者检查这个; 但是Point是一个值类型,所以我不能在那里返回null.

理想情况下,我希望这些方法"看起来"相似; 一种解决方案可能是将它们定义为

public Point CalculatePoint(... out Boolean boSuccess);
public List CalculateListOfPoints(... out Boolean boSuccess);

或者返回一个点?对于CalculatePoint,并返回null以指示失败.这意味着必须回归到非可空类型,这似乎是过度的.

另一种方法是返回布尔boSuccess,将结果(Point或List)作为'out'参数,并将它们称为TryToCalculatePoint或其他...

什么是最佳做法?

编辑:我不想使用Exceptions进行流量控制!有时候会失败.



1> Luk..:

就个人而言,我想我会使用与TryParse()相同的想法:使用out参数输出实际值,并返回一个布尔值,指示调用是否成功

public bool CalculatePoint(... out Point result);

我不喜欢为"正常"行为使用异常(如果您希望该函数不适用于某些条目).



2> Jon Skeet..:

他们为什么会失败?如果是因为调用者所做的事情(即提供的参数),那么抛出ArgumentException是完全合适的.避免异常的Try [...]方法很好.

我认为提供引发异常的版本是一个好主意,因此,如果他们错了,那些期望他们将始终提供良好数据的呼叫者将收到适当强烈的消息(即异常).



3> Kevin..:

另一种方法是抛出异常.但是,您通常只想在"例外情况"中抛出异常.

如果失败案例很常见(并非例外),那么您已经列出了两个选项. 编辑:您的项目中可能有一个约定如何处理此类非特殊情况(无论是应该返回成功还是对象).如果没有现有的约定,那么我同意lucasbfr并建议你返回成功(这与TryParse(...)的设计方式一致).

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有