Ну так это особенность С/С++, и этого никак не избежать, даже если везде пытаться ловить исключения, найдутся баги
Я всё говорю о таких простых вещах, как проверить, что std::fstream действительно корректный после открытия файла (т.е. файл успешно открылся).