在UserControl中处理异常的正确方法

时间:2008-11-13 17:03:01

标签: c# winforms .net-3.5

我正在构建一个UserControl并且我不确定如何处理异常,Control本身并不是很复杂,用户从磁盘中选择了一个图像以便他们可以对其进行授权,我不确切知道如何控制将被使用所以,如果我使用MessageBox,我可能会阻止该应用程序,如果我只是重新抛出它,我可能会崩溃它。

提前感谢。

Juan Zamudio

4 个答案:

答案 0 :(得分:3)

这是构建库的开发人员面临的常见问题。尝试清除错误并确定剩余的错误情况,如果它是预期的错误(您的控件不应抛出异常,而是优雅地处理错误)或意外的异常情况(您的控件必须尽快抛出异常)。

您可能还需要查看Design By Contract,这是一种声明所需前置条件和保证后置条件的方法。这可能听起来很学术,但它会带来更强大的代码。

更新: 一个很好的介绍是http://se.ethz.ch/~meyer/publications/computer/contract.pdf

此致 tamberg

答案 1 :(得分:0)

绝对应该抛出未处理的异常,以便使用您的控件的人可以看到错误。

答案 2 :(得分:0)

只处理您知道并知道如何处理的异常。不要使用通用处理程序,如MessageBox。只需让它传播到应用程序,其中有更多的上下文来诊断错误。它们有责任捕获任何异常,以便应用程序不会崩溃。在异常的情况下,他们无法做任何事情,因为它与控件的内部有关,你应该自己处理,如果它部分是用户的错,请用一条消息说明缺少的内容,用原始文件包装通过InnerException属性可用的异常。

答案 3 :(得分:0)

除了已经说过的内容之外,我还想提一下,你应该尝试让你的控件通过检查不同的对象状态和“防止”来避免异常,而不是允许引发异常。

请注意抛出异常是一个相当昂贵的过程并且(正如我过去所说的那样)应该为真正的“例外”意外情况保留例外......

最诚挚的问候,
弗兰克

相关问题