QT/C ++ Обработка ошибокC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 QT/C ++ Обработка ошибок

Сообщение Anonymous »

Я провел много исследований по обработке ошибок в Qt/C++, но до сих пор так же растерян, как и тогда, когда начал. Возможно, я ищу простой выход (как это делают другие языки). Один из них, в частности, предусматривает необработанное исключение, которое я использую неукоснительно. Когда программа сталкивается с проблемой, она выдает необработанное исключение, чтобы я мог создать собственный отчет об ошибках. Этот отчет отправляется с компьютера моего клиента на онлайн-сервер, который я затем читаю позже.

Проблема, с которой я сталкиваюсь при использовании C++, заключается в том, что любая выполненная обработка ошибок имеет о которых следует подумать ДО раздачи (подумайте о попытке/пойме или массивных условных предложениях). По моему опыту, проблемы в коде не продумываются заранее, иначе проблем не было бы с самого начала.

Написание кроссплатформенного приложения без кросс-платформенного приложения Механизм обработки/отчетности/трассировки ошибок платформы меня немного пугает.

Мой вопрос: существует ли какой-либо специальный «универсальный» перехват ошибок в Qt или C++? механизм, который я могу использовать в своем приложении, чтобы в случае чего что-то пойдет не так, я могу хотя бы написать отчет до того, как он выйдет из строя?

Пример:

Код: Выделить всё

class MainWindow: public QMainWindow
{
[...]

public slots:
void add_clicked();
}

void MainWindow::add_clicked()
{
QFileDialog dlg(this, Qt::Sheet);
QString filename = dlg.getOpenFileName(this);

if(!filename.isEmpty())
{
QStringList path = filename.split(QDir::separator());
QString file = path.at(path.count()); // Index out of range assertion.

if(!lst_tables->openDatabase(filename))
{
[...]
}
}
}
Я хочу, чтобы эта ошибка была перехвачена как необработанное исключение И приложение закрылось, не показывая пользователю окно сбоя по умолчанию в операционной системе Windows/Mac. Я просто хочу, чтобы он завершил работу после записи сообщения утверждения в файл и т. д.

Подробнее здесь: https://stackoverflow.com/questions/466 ... r-handling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»