簡體   English   中英

從使用Activator.CreateInstance(type)創建的實例中捕獲異常

[英]Catch an exception from an instance created with Activator.CreateInstance(type)

我有一個C#應用程序,可以使用Activator.CreateInstance(type)加載其他實現了給定接口(插件)的dll。

現在,我想在它自己的異常處理程序中捕獲從該新實例拋出的所有異常(因為我不能確定每個異常都由插件正確處理了),以呈現如下消息:

插件[PluginName]導致以下錯誤:[Exception.Message]

我可以訂閱AppDomain.CurrentDomain.UnhandledException事件,但這會捕獲所有異常,不僅捕獲由某個插件引起的異常,而且我也看不到[what]插件引起了異常。

是否可以為創建的實例分配異常處理程序?

提前致謝,
坦率

我不確定我是否了解您的確切情況,但是一個解決方案可能是在插件對象周圍創建一個包裝器類,以確保所有潛在異常均得到正確處理:

 public interface IPluginObject
 {
      void Foo();
      IBlah Bar();
      ...
 }

 public Wrapper<T>: IPluginObject where T: IPluginObject
 {
      private readonly T inner;

      public Wrapper(IPlugin obj) { inner = obj; }

      public void Foo()
      {
           try { inner.Foo() }
           catch ....
           finally ...
      }

      public IBlah Bar()
      {
           try { return inner.Bar(); }
           catch ...
           finally ...
      }
 }

繁瑣? 是的,但是您確實可以獲得確切知道哪個插件麻煩的好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM