捕获插件UserControl抛出的异常

时间:2009-01-14 08:23:16

标签: c# winforms exception plugins user-controls

我正在编写一个WinForms应用程序,它以插件的形式接受动态用户界面控件(想想小部件)。为此,每个插件的主要功能返回一个UserControl,然后将其添加到主窗体。

由于我的应用程序没有直接控制它们,我想异常地“插入”插件,如果其中一个UserControls抛出错误,我可以捕获它并卸载罪魁祸首。显而易见的麻烦是UserControls是事件驱动的,并且可以在数百万个不同的地方抛出异常,因此我没有一件事可以包装在try / catch块中。

如何捕获动态UserControl抛出的异常或者这种模块化应用程序的更好设计?

2 个答案:

答案 0 :(得分:1)

您可以使用全局异常处理(如自定义HTTPModule)然后通过哪个插件确定异常被抛出。

看看这个链接,也许有用 http://www.15seconds.com/issue/030102.htm
http://codebetter.com/blogs/karlseguin/archive/2006/06/12/146356.aspx

答案 1 :(得分:1)

通过调用插件实现并在每次调用周围添加try catch逻辑,将UserControl封装在实现插件接口的对象中。