• 243阅读
  • 5回复

[提问]QT 怎么捕获异常? [复制链接]

上一主题 下一主题
离线dafei2015
 

只看楼主 倒序阅读 楼主  发表于: 09-17
关键词: QT异常
代码如下:
void MainWindow::on_pushButtonReadTest_clicked()
{    
    QString file_path = QFileDialog::getOpenFileName(this,QStringLiteral("请选择要导入的Excel")   ,"D:/","Excel(*.xls *.xlsx)");
    if (file_path.isEmpty()) {return;}    
    ExcelEngine excel(file_path);
    QT_TRY {excel.Open();}  
    QT_CATCH (std::exception &e)  
   {        
      qDebug()<<e.what();
    }
   QT_TRY {excel.GetCellData(1,1);}  
   QT_CATCH (QAxBase &e)  
   {      
      qDebug()<<e.className();
    }  
excel.Close();}
程序直接退出,捕获不到异常,求大神指点下,谢谢!
用户输入的文件已经打开或者文件不存在等原因,可能就异常退出了。
用debugging模式,代码运行到try{ }这一行弹出异常警告对话框,然后程序就是这里崩溃,不往下运行,所以捕捉不到异常



本帖提到的人: @20091001753 @圣域天子 @toby520
在线青空飞羽

只看该作者 1楼 发表于: 09-17
有可能你捕获的异常类型和实际的异常类型不符 ,QT_CATCH (...) 捕获所有异常
4条评分好评度+1贡献值+1金钱+1威望+1
lieber 好评度 +1 - 09-18
lieber 贡献值 +1 - 09-18
lieber 威望 +1 - 09-18
lieber 金钱 +1 - 09-18
离线dafei2015

只看该作者 2楼 发表于: 09-17
回 青空飞羽 的帖子
青空飞羽:有可能你捕获的异常类型和实际的异常类型不符 ,QT_CATCH (...) 捕获所有异常 (2020-09-17 13:26) 

那怎么在catch(...) {}打印出异常呢
在线青空飞羽

只看该作者 3楼 发表于: 09-17
回 dafei2015 的帖子
dafei2015:那怎么在catch(...) {}打印出异常呢 (2020-09-17 13:40) 

这种就打印不了,要想打印具体的异常信息,只能捕捉明确的异常类型
离线snow_man_0

只看该作者 4楼 发表于: 09-17
Qt没有自己的异常机制,请到C++论坛提问
在线圣域天子

只看该作者 5楼 发表于: 09-21
VC编译器?默认try...catch无效的。

另外oledb这套东西的异常记得本来就捕不到的,好象它不是用这种方式抛异常的
很久不做这个了,不大记得了。
快速回复
限100 字节
 
上一个 下一个