从常规中返回东西时的最佳实践

时间:2009-07-09 01:27:36

标签: error-handling return-value

从例行程序中返回某些内容时,最佳做法是什么?我应该总是或仅仅在失败时返回状态位吗?例如:

失败时返回(0,“因......失败”) 成功时返回(1,success_value,second_success_value)。

或者

失败时返回(0,“因......失败”) 成功时返回(success_value,second_success_value)。

我通常在Perl中编程,但我想这个问题代表我可能尝试编写的任何语言。谢谢!

3 个答案:

答案 0 :(得分:3)

答案非常依赖于语言。你应该按照你正在使用的语言的习语。你提到的Perl的习惯用法是返回零(0)表示成功,其他值表示失败。如果您需要返回多个值,如示例中所示,其中一个值可能始终是成功/失败代码。

如果您使用支持异常的语言(例如Java,C#,C ++),那么您应该使用异常指示异常情况(例如,失败)。如果例程正常完成(即没有例外),则可以假定它已成功,并且可以安全地使用任何返回的值。

答案 1 :(得分:1)

在支持它们的语言中,您应该抛出描述性异常。

在适用的情况下,您应该抛出正确类型的例外(例如,{。1}}或ArgumentNullException在.Net中

答案 2 :(得分:0)

嘿,阿克斯,我过去曾问自己一个类似的问题......

其中一些答案可能会对您有所帮助

Is it bad practice to return Exceptions from your methods

我得出的基本结论是,只有在呼叫者需要的情况下,才能返回任何内容。

所以,在大多数情况下,我发现将我的方法设置为Void更好,并且如果出现任何问题,它会抛出一个有意义的异常。如果一切顺利,那么作为来电者,我并不在乎