вторник, 26 мая 2009 г.

обработка ошибок вывода [ C / C++ / Java ]

printf() в случае успеха возвращает число записанных байт.
putchar() возвращает EOF в случае если не получилось записать символ.
С одной стороны хорошо бы каждый раз при вызове любой системной функции проверять возвращаемое значение, но делать это бывает чересчур утомительно, в случае если подобных вызовов достаточно много.
Вместо этого можно проверять были ли ошибки на стандартном потоке вывода перед завершением программы.
В Java для этого пользуются методом checkError(); в С++ для этого пользуются методами fail(), good() или bad(); и в коде на C пользуется функция ferror: if (ferror (stdout )) err (1, "stdout");

2 комментария:

  1. Но в таком случае опять же непонятно, в каком именно месте произошла ошибка.

    ОтветитьУдалить
  2. совершенно верно. Но ведь каждый раз пользуясь printf'ом ты же тоже не проверяешь возвращаемое значение?

    ОтветитьУдалить