0

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

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

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

有什么建议吗?谢谢。

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

回答

1

不,实际上没有。表单线程有exception handler,但这也是全局的(即所有表单参与)。

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

+0

这将是使用Application.ThreadException事件而不是MyApplication_UnhandledException事件的优点吗? – gingo 2012-01-06 09:14:16

+0

最大的不同之处在于,允许用户忽略Windows窗体线程中引发的异常可能允许程序继续成功运行。例如,如果开发人员忘记向按钮单击事件添加异常处理程序,则ThreadException可能会报告异常并询问用户是否要继续。如果他们这样做,这个例外将被忽略;如果他们不这样申请可能会被终止。 – 2012-01-06 09:27:33

+0

好吧,如果我明白了,我更喜欢在应用程序级别的ThreadException。通常在应用程序中同时使用ThreadException和MyApplication_UnhandledException? – gingo 2012-01-06 10:07:25

0

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

相关问题