c – 处理QPluginLoader :: load()抛出的异常

我有2个Qt插件,main和helper,main.dll加载helper.dll.当main.dll和helper.dll都在同一个文件夹中时,我能够成功加载带有QPluginLoader的main.dll.当helper.dll不存在且我尝试加载main.dll时会抛出异常.这是可以理解的原因无法找到helper.dll.我的任务是成功捕获抛出的异常,而不是崩溃应用程序.这里调试是Qt Creator显示的内容:

《c – 处理QPluginLoader :: load()抛出的异常》

以下代码没有解决问题,所以我需要做点其他事情……

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.

点赞