2010-11-10 29 views
3

所以当我在VBA/VB6中玩过很多时,我从来没有深入过详细的错误处理。大多数情况下,如果遇到用户错误(例如他们的某些输入未通过某种验证测试),则弹出带有一些错误信息和关键(或警告)图标的MsgBox(),并安全地中止该代码,并希望他们得到了线索。用户错误抛出异常?或者更好地设计自定义错误消息框架?

在.NET中,我的阅读基本上指出了异常作为错误处理中的最终结果。在我看来,如果你知道一个用户可能搞砸的代码点,你应该试着用try ... catch块(用于数据转换之类的东西)来捕获它,或者标准的如果... ...。 ..ELSE构造其他的东西,然后在需要时抛出一个新的异常。

从某种意义上讲,不是抛出一个本质上是强制性程序崩溃的异常(当然,你可以选择继续)?或者是特别针对诸如数据转换错误和其他“不应该发生的事情”这样的事情设计的例外,并且恢复MsgBox()和朋友对次要用户拧紧的使用?

考虑一下你只有一个TextBox的情况,该TextBox只能接受数字数据(或者只是一组特定的字符)。除了可以限制该字段的其他技巧(让我们假设它是自由形式的,以编程方式),在每次键入无效字符时抛出新的异常,或者即使未发生错误检查,也似乎有点浪费直到他们按下提交按钮(如在网页上)。在这种情况下弹出一个MsgBox()似乎更加理智。

那么什么是直接的异常和投入新的用户错误?如果你的程序也暴露了一个程序框架,那么怎么样?对编程功能之一的错误使用绝对看起来像是我的新异常领域。

回答

1

.NET中的异常当然可用于错误输入,而不仅仅是不应该出错的事情。无论如何,你不应该让无用的例外交给用户。

无论是“测试”输入还是让框架检测到异常,您可能都会显示一个MsgBox,因此它不会产生巨大差异。看起来异常通常很慢,您应该使用'if'语句来捕获明显的验证错误,并依靠异常来捕获更加模糊的场景。

+0

这是有道理的。只是在我阅读的大部分时间里,有时会建议抛出异常是错误处理的主要方式(尽管从来没有直接说过)。我没有遇到过在.NET中提供其他替代方法的文档。我怀疑这是因为许多作者可能认为一般的.NET程序员已经熟悉处理错误。所以这给了我一些确认。 – Kumba 2010-11-10 19:24:01