Поскольку у вас нет представления о внутренностях CFile (или нет, если он правильно инкапсулирован), вам нужно полагаться на «контракт» API. Другими словами, если документация не говорит вам конкретно, что происходит в определенных случаях, вы не можете на это полагаться.
Даже если у вас есть исходный код и вы можете его выяснить, спецификация API является контрактом, и все, что там не указано, может измениться в любое время. Это одна из причин, по которой некоторые разработчики программного обеспечения опасаются публиковать внутренние компоненты, так как тогда можно увидеть, что они могут навсегда поддерживать их.
Если вы действительно хотите убедиться, что ваш файл будет находиться в известном состоянии после исключения, вам придется кодировать поведение. Это может быть что-то вроде:
- резервное копирование файла при запуске программы (просто); или
- резервное копирование перед каждой операцией сохранения (все еще относительно просто); или
- резервное копирование перед любой операцией записи (сложной и медленной).