【发布时间】:2011-10-21 00:08:31
【问题描述】:
处理可能偶尔无法评估的函数的最佳方法是什么,但即使它确实失败也不需要停止父例程,尽管有时可能需要向用户解释?
我的代码深处有这样一个函数,它返回一个数字。在编码方面,最简单的方法是使函数可以为空,并在无法评估时返回 null。这样,调用例程可以继续,同时还知道函数未能返回数字。
但是,根据具体情况,有时我想向用户显示失败的原因,以便他们知道要修复什么。显然只返回 null 是不够的信息。我是否应该在函数本身内部引发消息,因为它会评估要捕获的匿名侦听器,以便在需要时显示?
(对于那些正确指出逻辑函数不应该负责创建用户消息的人,我并不是要暗示该函数生成全文消息,只是以某种方式传输问题的原因,以便 UI 可以稍后解析进入消息)
我想的另一个选项是在函数内部抛出异常,如果它无法评估,然后在需要时捕获并解释给用户消息。但是,如前所述,无法评估通常并不意味着例程的停止,现在我每次使用函数调用时都必须在函数调用周围放置一个 Try...Catch 块。
【问题讨论】:
-
我觉得“TryX”模式可能是最好的解决方案。这样我就可以调用该函数而不必担心停止例程,并在需要时获取失败原因。扩展返回集以包含成功/失败信息的建议解决方案可能也可行,但我个人认为它不经常使用,并且可能会使处理返回更加麻烦。
标签: c# vb.net design-patterns .net-3.5