Один метод, который я использовал с большим эффектом, - это метод, используемый В. Ричардом Стивенсом в Сетевом программировании Unix (код доступен для скачивания здесь . Для общих функций, которые он ожидает, чтобы преуспеть все время, и не имеет возможности обратиться за ошибкой, он переносит их, используя заглавную букву (код сжат по вертикали):
void * Malloc(size_t size) {
void *ptr;
if ( (ptr = malloc(size)) == NULL)
err_sys("malloc error");
return(ptr);
}
err_sys
здесь отображает ошибку и затем выполняет exit(1)
. Таким образом, вы можете просто позвонить Malloc и знать, что он выдаст ошибку, если возникнет проблема.
UNP по-прежнему остается единственной книгой, в которой, как мне кажется, у автора есть код, который проверяет возвращаемые значения всех функций, которые возможно потерпеть неудачу. Каждая другая книга гласит: «Вы должны проверить возвращаемые значения, но мы оставим это для вас позже».