30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.26 Error reporting [fs.err.report]

Функции библиотеки файловой системы часто предоставляют две перегрузки: одна генерирует исключение для сообщения об ошибках файловой системы, а другая устанавливает файл error_­code. [ Note: Это поддерживает два распространенных варианта использования:

  • Используется там, где ошибки файловой системы действительно исключительны и указывают на серьезный сбой. Выброс исключения - это подходящий ответ.

  • Используется там, где ошибки файловой системы являются обычными и не обязательно означают сбой. Наиболее подходящим ответом является возврат кода ошибки. Это позволяет обрабатывать ошибки приложения, в том числе просто игнорировать ошибку.

end note]

Функции, не имеющие аргумента типа, error_­code& обрабатывают ошибки следующим образом, если не указано иное:

  • Когда вызов реализацией операционной системы или другого базового API приводит к ошибке, которая не позволяет функции соответствовать ее спецификациям,filesystem_­error должно быть выброшено исключение типа . Для функций с одним аргументом пути этот аргумент должен быть передан filesystem_­error конструктору с одним аргументом пути. Для функций с двумя аргументами пути первый из этих аргументов должен быть передан filesystem_­error конструктору как path1 аргумент, а второй должен быть передан как path2 аргумент. В filesystem_­error конструкторском error_­code аргумент устанавливается в зависимости от обстоятельств зависимой ошибки конкретной операционной системы.

  • О невозможности выделить хранилище сообщается путем выдачи исключения, как описано в [res.on.exception.handling].

  • Деструкторы ничего не выкидывают.

Функции, имеющие аргумент типа, error_­code& обрабатывают ошибки следующим образом, если не указано иное:

  • Если вызов реализацией операционной системы или другого базового API приводит к ошибке, которая не позволяет функции соответствовать ее спецификациям, error_­code& аргумент устанавливается в соответствии с конкретной зависимой от операционной системы ошибкой. В противном случае clear() вызывается error_­code& аргумент.