Я работаю над встроенным Linux и копирую файлы на USB-флешки.
мои файлы:
sourceFile->open(QIODevice::ReadOnly);
targetFile->open(QIODevice::ReadWrite);
переменные
nCopySize = sourceFile->size() / 100;
QByteArray buffer;
и чтениенапишите часть:
//copy files
for (int count = 0; !(buffer = sourceFile->read(nCopySize + 1)).isEmpty(); count+=(nCopySize + 1))
{
try {
int writeErr = targetFile->write(buffer);
qDebug() << writeErr;
if (writeErr == -1) { //e.g. when device is plugged off
abortCopyFile = true;
}
} catch (const std::exception& ex) {
qDebug() << "catched something:" << ex.what();
//abort copying file... etc.
} catch (...) {
qDebug() << "catched something else";
//abort copying file... etc.
}
//report progress ...
//abort-option
if (abortCopyFile == true)
break;
}
Я не знаю, верна ли часть catch
, но это не мой настоящий вопрос.Дело в том, что когда я отключаю флэш-накопитель USB во время копирования файла из системы на флэш-накопитель USB, строка
targetFile->write(buffer);
иногда отвечает -1
, а иногда вообще не реагирует иприложение вроде зловеще падает.
Так что я думал, что try-catch
поможет мне, но это не так.Ничего не ловит.Приложение просто падает.
Что я могу сделать с этой проблемой?Перезапуск приложения - это самое меньшее, что я хочу сделать.