当前位置:   article > 正文

发生了快速异常检测失败,将不会调用异常处理程序

发生了快速异常检测失败,将不会调用异常处理程序

最近调试一个项目,发现任务在多线程执行时,每次退出程序会出现标题中的错误,出错代码如下:

  1. //线程池
  2. PoolManager* manager = new PoolManager(folder_path, max_thread.toInt(), startPage, endPage);
  3. manager->moveToThread(&worker_thread_);
  4. connect(manager, &PoolManager::new_progress, this, &KonachanCollecter::update_progress);
  5. worker_thread_.start();
  6. manager->add_new_task("https://konachan.com/post?tags=" + tags);

出错信息:

发生了快速异常检测失败,将不会调用异常处理程序!

而不使用多线程时,程序正常退出,比如注释掉下面两行!

  1. //线程池
  2. PoolManager* manager = new PoolManager(folder_path, max_thread.toInt(), startPage, endPage);
  3. //manager->moveToThread(&worker_thread_);
  4. connect(manager, &PoolManager::new_progress, this, &KonachanCollecter::update_progress);
  5. //worker_thread_.start();
  6. manager->add_new_task("https://konachan.com/post?tags=" + tags);

结合出错的位置,我猜想是线程没有正常退出造成的,于是在析构函数中加入了如下代码:

  1. //author:autumoon
  2. //联系QQ:4589968
  3. //日期:2021-04-23
  4. //加上这句话,避免线程异常退出
  5. if (worker_thread_.isRunning())
  6. {
  7. worker_thread_.quit();
  8. worker_thread_.wait();
  9. }

问题得到解决!

网上搜索发现出现此错误提示的原因很多,比如变量未初始化也可能造成此问题,所以需要通过注释代码的方式,逐步找到问题的所在。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42463
推荐阅读
相关标签
  

闽ICP备14008679号