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

62 篇文章 8 订阅

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

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

出错信息:

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

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

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

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

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

问题得到解决!

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值