- не закрывать же все если только в одном ошибка произошла
Это не столь очевидно. Многие (в том числе и я) придерживаются мнения что фатальные ошибки отлову и обработке не подлежат - их надо исправлять. А если оптимизма много, то в разделе "кладовая" был пост как ловить, найдете.
Проверка на равенство NULL - это часный случай. Обычно бывает так что указатель не равен NULL и указывает на участок в памяти, который был освобождён. Как проверить указатель на валидность перед обращением?
Знову за рибу грошi
В языке C/C++ таких средств нет (и это правильно)