我正在编写一个 WinForms 应用程序,它以插件(想想小部件)的形式接受动态用户界面控件。为此,每个插件的主要功能都会返回一个 UserControl,然后将其添加到主窗体。
由于我的应用程序无法直接控制它们,所以我想以异常方式“沙盒”插件,这样如果其中一个 UserControl 抛出错误,我可以捕获它并卸载罪魁祸首。明显的问题是 UserControls 是事件驱动的,可以在一百万个不同的地方抛出异常,所以我没有任何东西可以包装在 try/catch block 中。
我如何捕获动态 UserControl 抛出的异常,或者对于这样的模块化应用程序,什么是更好的设计?
最佳答案
通过简单地调用插件实现并在每个调用周围添加您的 try catch 逻辑,将您的 UserControl 封装在一个实现您的插件接口(interface)的对象中。
关于c# - 捕获插件 UserControl 抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442273/