我有2个Qt插件,main和helper,main.dll加载helper.dll.当main.dll和helper.dll都在同一个文件夹中时,我能够成功加载带有QPluginLoader的main.dll.当helper.dll不存在且我尝试加载main.dll时会抛出异常.这是可以理解的原因无法找到helper.dll.我的任务是成功捕获抛出的异常,而不是崩溃应用程序.这里调试是Qt Creator显示的内容:
以下代码没有解决问题,所以我需要做点其他事情……
std::exception_ptr eptr;
QPluginLoader pluginLoader(packagePath);
try
{
pluginLoader.load();
}
catch(...)
{
eptr = std::current_exception();
}
最佳答案 我相信在这种情况下你应该使用Windows __try / __except扩展:
__try
{
// guarded code
}
__except ( expression )
{
// exception handler code
}
这种异常会让你抓住SEH错误,你可以在MSDN上找到一篇关于它的详细文章:
https://msdn.microsoft.com/en-us/library/swezty51.aspx
此外,这是另一个主题,为了优雅地终止你也可以使用SetUnhandledExceptionFilter.