Error handling
E.28
Избегайте обработки ошибок на основе глобального состояния (например, `errno`)
Причина
Глобальным состоянием трудно управлять, и легко забыть его проверить. Когда вы в последний раз проверяли возвращаемое значение printf()?
Смотрите также: Симуляция RAII
Пример (плохой)
int last_err;
void f(int n)
{
// ...
p = static_cast<X*>(malloc(n * sizeof(X)));
if (!p) last_err = -1; // ошибка при исчерпании памяти
// ...
}
Примечание
Обработка ошибок в стиле C основана на глобальной переменной errno, поэтому полностью избежать этого стиля практически невозможно.
Контроль
Затруднено.