抛出用户错误的例外情况?或者更好地设计自定义错误消息框架?

时间:2010-11-10 15:37:41

标签: vb.net exception

所以当我在VBA / VB6中玩很多时,我从来没有进行太多详细的错误处理。大多数情况下,如果您遇到用户错误(例如他们的某些输入未通过某种验证测试),您会弹出一个带有一些错误信息和关键(或警告)图标的MsgBox(),并安全地中止代码,并希望他们得到一个线索。

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

在某种意义上,不会抛出异常本质上是程序的强制崩溃(授予,您可以继续选择)?或者是专门针对诸如数据转换错误和其他“不应该发生的事情”之类的事情的例外,并继续使用MsgBox()和朋友进行次要用户搞砸?

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

那么什么是异常的直接愚蠢,并在用户错误上抛出新的?如果您的程序还公开程序框架怎么样?其中一个程序功能的错误使用对我来说肯定是新的例外。

1 个答案:

答案 0 :(得分:1)

.NET中的异常肯定可用于错误输入,而不仅仅是那些永远不会出错的东西。在任何情况下,您都不应该让非公开的例外情况发生在用户身上。

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