Какой самый чистый способ изящно завершиться неудачей, когда файл не может быть открыт в C ++? - PullRequest
4 голосов
/ 16 октября 2010

Программа требует, чтобы файл был запущен, но если по какому-либо множеству причин он не может быть найден или не читается и т. Д. - какой самый чистый способ выхода из программы?

Ответы [ 4 ]

7 голосов
/ 16 октября 2010

Сбой, как в случае ошибки в других случаях:

  • Программа командной строки выведет нечитаемый файл (полный путь) и точную причину невозможности прочитать его в Stderr и выйти скод ошибки.Функции strerror() и perror() помогут вам в вербализации причины сбоя.
  • Gui отправит сообщение об ошибке, подобное приведенному выше, и выйдет после подтверждения.
4 голосов
/ 16 октября 2010

Если файл требуется, а отсутствующий файл ненормальный, я бы выдал исключение.Это будет затем обработано на более высоком уровне, где можно решить, что делать с проблемой.Если приложение не может работать без рассматриваемого файла, я бы просто аккуратно завершил его с соответствующим сообщением об ошибке, чтобы показать точную проблему своим пользователям.

И, конечно, я бы постарался проверить это раньше.для этого файла, прежде чем выделять другие ресурсы.Таким образом, выполняется меньше ненужных вещей и меньше неиспользуемых ресурсов для освобождения после аварийного завершения.

1 голос
/ 16 октября 2010

Этот тип сообщения об ошибке всегда должен включать:

  • имя, под которым программа пыталась открыть файл
  • результат strerror(errno) в Unix, или скорееболее замысловатый эквивалент Windows.
0 голосов
/ 16 октября 2010

Я думаю об этих трех шагах:

Первый : распечатать имя файла с соответствующим сообщением об ошибке.

Второй : очистить ресурсы, которые заняла ваша программа. свободная память, закрытие каналов, закрытие сокетов, удаление временных файлов, освобождение мьютексов ....

Третий : Завершить, используя exit().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...