gpt4 book ai didi

c# - 使用加载外部程序集/dll 的 Windows 服务正确处理错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:18 24 4
gpt4 key购买 nike

我有一个 Windows 服务,可以加载一堆只是 .dll 文件的“插件”。它使用反射来做到这一点:

try
{
Assembly assembly = Assembly.LoadFile("myPlugin.dll");
Type[] types = assembly.GetTypes();
foreach (Type t in types)
{
Type[] ifaces = t.GetInterfaces();

foreach (Type f in ifaces)
{
if (f.Name == "MyPlugin")
{
pType = t;
break;
}
}
if (pType != null)
break;
}
}
catch
{
AddToLog("Failed");
}
obj = Activator.CreateInstance(pType);

object[] Parameters = new object[1];
Parameters[0] = _pluginName;

try
{
pType.InvokeMember("InitializePlugin",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
obj,
Parameters);

}
catch (Exception ex)
{
AddToLog(_pluginName + " - InitializePlugin error: " + ex.Message);
}

我遇到的问题是,如果使用外部 dll 的“InitializePlugin”方法失败,它不会被上面代码中的 try/catch 捕获,并最终导致整个服务崩溃。有没有更好的方法来处理在这样的外部加载程序集中发生的错误?

最佳答案

无一异常(exception)地使用一个catch block 。并非所有异常都有类型。

try
{

}
catch(Exception ex)
{

}
catch
{
}
finally
{
}

关于c# - 使用加载外部程序集/dll 的 Windows 服务正确处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com