如何在自定义控件中捕获未处理的异常

时间:2012-01-05 17:12:15

标签: vb.net winforms visual-studio-2010 exception-handling user-controls

VB中的用户控件是否有类似于MyApplication_UnhandledException的内容? 我想有一个中心点,用于捕获用户控件的所有未处理的异常,而不将异常传播到使用用户控件的应用程序。

我做了一些测试,在我的用户控件的方法中引发异常,其中没有try / catch代码(当然在真正的项目中,所有方法都有try / catch块)。 使用用户控件的应用程序的MyApplication_UnhandledException事件捕获到异常。 但这与异常发生的距离太远,在最坏的情况下,用户应该重新启动应用程序。

我想实现用户控件的行为,以便在用户控件失败时,异常不会传播到应用程序,而只是在用户控件级别捕获。

有什么建议吗?谢谢。

编辑:我忘了告诉我说的是WinForm

2 个答案:

答案 0 :(得分:1)

不,确实没有。表单线程有一个exception handler,但这也是全局的(即所有表单都参与其中)。

唯一真正的选择是在整个过程中添加适当的try / catch块。

答案 1 :(得分:0)

该异常的InnerException是否为空?有时它会下降几个级别,但您可以递归迭代,直到找到最内部的InnerException并记录该ErrorMessage&栈跟踪。