查看完整版本: [-- QT 怎么捕获异常? --]

QTCN开发网 -> Qt基础编程 -> QT 怎么捕获异常? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

dafei2015 2020-09-17 11:58

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{ }这一行弹出异常警告对话框,然后程序就是这里崩溃,不往下运行,所以捕捉不到异常




青空飞羽 2020-09-17 13:26
有可能你捕获的异常类型和实际的异常类型不符 ,QT_CATCH (...) 捕获所有异常

dafei2015 2020-09-17 13:40
青空飞羽:有可能你捕获的异常类型和实际的异常类型不符 ,QT_CATCH (...) 捕获所有异常 (2020-09-17 13:26) 

那怎么在catch(...) {}打印出异常呢

青空飞羽 2020-09-17 15:20
dafei2015:那怎么在catch(...) {}打印出异常呢 (2020-09-17 13:40) 

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

snow_man_0 2020-09-17 16:58
Qt没有自己的异常机制,请到C++论坛提问

圣域天子 2020-09-21 17:42
VC编译器?默认try...catch无效的。

另外oledb这套东西的异常记得本来就捕不到的,好象它不是用这种方式抛异常的
很久不做这个了,不大记得了。


查看完整版本: [-- QT 怎么捕获异常? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled