2009-01-14 66 views
2

我正在編寫一個WinForms應用程序,它以插件的形式(認爲小部件)接受動態用戶界面控件。爲此,每個插件的主要功能都會返回一個UserControl,然後將其添加到主窗體中。插件UserControl引發的捕獲異常

由於我的應用程序沒有直接控制它們,所以我想「插件」插件異常明智,以便如果其中一個UserControls引發錯誤,我可以抓住它並卸載罪魁禍首。顯而易見的問題是UserControls是事件驅動的,可以在一百萬個不同的地方拋出異常,所以我沒有一件東西要包裝在try/catch塊中。

如何捕獲由動態UserControl引發的異常,或者對於這樣的模塊化應用程序有什麼更好的設計?

回答

1

將UserControl封裝在實現插件接口的對象中,只需調用插件實現並在每次調用時添加您的try catch邏輯即可。

+0

我不確定我明白你的意思。插件接口只有一個函數:GetUserControl()。之後,UserControl被添加到表單並由UI事件驅動。 – 2009-01-14 10:06:39

1

您可以使用全局異常處理(如自定義HTTP模塊),然後確定異常是由它插上遙。

看看這個鏈接,也許有用
http://www.15seconds.com/issue/030102.htm
http://codebetter.com/blogs/karlseguin/archive/2006/06/12/146356.aspx

+0

猜測我省略了一個重要的細節:這是一個WinForms應用程序,而不是ASP(現在編輯)。無論哪種情況,全局異常處理想法都可能是一種解決方案,所以我正在研究一些AOP替代方案。謝謝。 – 2009-01-14 09:30:12