29 Input/output library [input.output]

29.11 File systems [filesystems]

29.11.7 Class filesystem_­error [fs.class.filesystem.error]

29.11.7.1 General [fs.class.filesystem.error.general]

namespace std::filesystem { class filesystem_error : public system_error { public: filesystem_error(const string& what_arg, error_code ec); filesystem_error(const string& what_arg, const path& p1, error_code ec); filesystem_error(const string& what_arg, const path& p1, const path& p2, error_code ec); const path& path1() const noexcept; const path& path2() const noexcept; const char* what() const noexcept override; }; }
The class filesystem_­error defines the type of objects thrown as exceptions to report file system errors from functions described in subclause [filesystems].

29.11.7.2 Members [fs.filesystem.error.members]

Constructors are provided that store zero, one, or two paths associated with an error.
filesystem_error(const string& what_arg, error_code ec);
Postconditions:
  • code() == ec,
  • path1().empty() == true,
  • path2().empty() == true, and
  • string_­view(what()).find(what_­arg.c_­str()) != string_­view​::​npos.
filesystem_error(const string& what_arg, const path& p1, error_code ec);
Postconditions:
  • code() == ec,
  • path1() returns a reference to the stored copy of p1,
  • path2().empty() == true, and
  • string_­view(what()).find(what_­arg.c_­str()) != string_­view​::​npos.
filesystem_error(const string& what_arg, const path& p1, const path& p2, error_code ec);
Postconditions:
  • code() == ec,
  • path1() returns a reference to the stored copy of p1,
  • path2() returns a reference to the stored copy of p2, and
  • string_­view(what()).find(what_­arg.c_­str()) != string_­view​::​npos.
const path& path1() const noexcept;
Returns: A reference to the copy of p1 stored by the constructor, or, if none, an empty path.
const path& path2() const noexcept;
Returns: A reference to the copy of p2 stored by the constructor, or, if none, an empty path.
const char* what() const noexcept override;
Returns: An ntbs that incorporates the what_­arg argument supplied to the constructor.
The exact format is unspecified.
Implementations should include the system_­error​::​what() string and the pathnames of path1 and path2 in the native format in the returned string.