【发布时间】:2011-07-27 04:45:02
【问题描述】:
我想知道这个“模式”是否有一个名称,其中方法签名称为 TrySomething,例如int.TryParse、decimal.TryParse等
我的一个同事经常使用这种命名约定——他们不会返回值或抛出异常,而是调用方法TryDoSomething,如果在处理过程中捕获到异常,则会通过 out 参数返回。
编辑:我理解私有示例不是 TryParse 方法的工作方式。这就是发布这个的目的......我不知道该怎么称呼它。我同意这似乎更像是一种命名约定,而不是一种模式。感谢您的所有意见。
编辑:Interesting...
对于可能在常见情况下抛出异常的成员考虑 TryParse 模式,以避免与异常相关的性能问题。
要实现 TryParse 模式,您需要提供两种不同的方法来执行在常见场景中可能引发异常的操作。第一个方法 X 执行操作并在适当时抛出异常。第二种方法 TryX 不会抛出异常,而是返回一个指示成功或失败的布尔值。成功调用 TryX 返回的任何数据都使用 out(Visual Basic 中的 ByRef)参数返回。 Parse 和 TryParse 方法就是这种模式的示例。
【问题讨论】:
-
我认为命名是一种约定,而不是一种模式。
-
如果他包装了一个普通方法,可以在 TryXYZ 方法内抛出异常,该方法捕获异常并通过 out 参数将其返回,那么我将这种模式称为:愚蠢。
-
"如果在处理过程中捕获到异常,它将通过 out 参数返回" 这不是
int.TryParse和decimal.TryParse的工作方式。 -
@Greg 我明白了,我只是指整个 TrySomething 的想法。异常/输出参数就是他的编码方式。
标签: c# design-patterns