Система обработки исключений при доступе к файлам в .NET работает следующим образом: 1
- Так как файловая система — ресурс операционной системы, методы ввода-вывода в .NET Core и .NET Framework служат оболочками для соответствующих вызовов операционной системы. 1
- Если в коде, выполняемом операционной системой, возникает ошибка ввода-вывода, операционная система возвращает сведения об ошибке в метод ввода-вывода .NET. 1
- Затем этот метод преобразует сведения об ошибке, обычно представленные кодом ошибки, в соответствующий тип исключения .NET. 1 В большинстве случаев код ошибки напрямую определяет нужный тип исключения. 1
Например, при вызове метода в операционной системе Windows код ошибки ERRORFILENOTFOUND (или 0x02) преобразуется в исключение FileNotFoundException, а код ошибки ERRORPATHNOTFOUND (или 0x03) — в DirectoryNotFoundException. 1
- По причине зависимости от операционной системы иногда идентичные условия (например, отсутствие указанного каталога) могут создавать в методах ввода-вывода любое исключение из класса ввода-вывода. 1 Это означает, что при вызове интерфейсов API ввода-вывода код должен быть готов обработать все такие исключения или большую их часть. 1
Для обработки исключений в .NET используется конструкция try…catch…finally. 3 Если в блоке try возникает исключение, то обычный порядок выполнения останавливается, и среда CLR начинает искать блок catch, который может обработать данное исключение. 3 Если нужный блок catch найден, то он выполняется, и после его завершения выполняется блок finally. 3 Если нужный блок catch не найден, то при возникновении исключения программа аварийно завершает своё выполнение. 3