我有一个函数可以读取一个大文件来填充一个 QStringList。程序崩溃可能是因为没有足够的内存,因为如果我使用一个小文件,程序运行良好。我尝试通过捕获异常来调试问题。
QStringList readlargefile(QString filename)
{
QStringList result;
QFile file(filename);
if (!file.open(QIODevice::ReadOnly))
{
qDebug()<<"cannot open file: "<<filename;
return result;
}
QTextStream in(&file);
in.setCodec("UTF-8");
QString line;
while(in.readLineInto(&line))
{
if(!line.isEmpty())
result<<line;
}
file.close();
return result;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QStringList result;
try
{
qDebug()<<"reading file";
result=readlargefile("largefile.txt");
}
catch(...) {
qFatal("got exception");
}
}
输出是:
reading file
Killed
我无法捕捉到异常,为什么?