[英]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.