Иллюстрированный самоучитель по практике программирования

Abort, Retry, Fail?

В предыдущих главах мы использовали для обработки ошибок функции вроде eprintf и estrdup – просто выводили некие сообщения перед тем, как прервать выполнение программы. Например, функция eprintf ведет себя так же, как fprintf (stderr,…), но после вывода сообщения выходит из программы с некоторым статусом ошибки. Она использует заголовочный файл <stdarg.h> и библиотечную функцию vfprintf для вывода аргументов, представленных в прототипе многоточием (). Использование библиотеки stdarg должно быть начато вызовом va_start и завершено вызовом va__end. Мы еще вернемся к этому интерфейсу в главе 9.

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Abort, Retry, Fail?

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Abort, Retry, Fail?

Если аргумент формата оканчивается двоеточием (:), то eprintf вызывает стандартную функцию strerror, которая возвращает строку, содержащую всю доступную дополнительную системную информацию об ошибке. Мы написали еще функцию weprintf, сходную с eprintf, которая выводит предупреждение, но не завершает программу. Интерфейс, схожий с printf, удобен для создания строк, которые могут быть напечатаны или выданы в окне диалога.

Сходным образом работает estrdup: она пытается создать копию строки и, если памяти для этого не хватает, завершает программу с сообщением об ошибке (с помощью eprintf):

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Abort, Retry, Fail?

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.