c – 处理QPluginLoader :: load()抛出的异常
发布时间:2020-12-16 07:15:46  所属栏目:百科  来源:网络整理 
            导读:我有2个Qt插件,main和helper,main.dll加载helper.dll.当main.dll和helper.dll都在同一个文件夹中时,我能够成功加载带有QPluginLoader的main.dll.当helper.dll不存在且我尝试加载main.dll时会抛出异常.这是可以理解的原因无法找到helper.dll.我的任务是成功捕
                
                
                
            | 
 我有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上找到一篇关于它的详细文章: 此外,这是另一个主题,为了优雅地终止你也可以使用SetUnhandledExceptionFilter. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 

