Подскажите какую-нибудь литературу про обработку ошибок в C. Интересуют больше не технические аспекты, а вопросы правильности и разумности.
В частности интересует следующее:
1. Правильно ли сообщать информацию об ошибках через errno или стоит свой аналог такой переменной завести? Что делать если хочется положить в errno код ошибки отличный от стандартного?
2. Как вообще определить, что при выполнении математической операции возникла ошибка ERANGE?
3. Где в коде следует выводить сообщения об ошибках? Как я понимаю, в библиотеке не должно вообще ничего выводиться, всё только через возвращаемые значения и errno. А вот в программе следует выводить сообщение об ошибке сразу там где она возникла, или стоит стараться отделять рабочие функции и функции общающиеся с пользователем?