# std::filesystem::filesystem_error::filesystem_error

From cppreference.com
< cpp‎ | filesystem‎ | filesystem error

filesystem_error( const std::string& what_arg, std::error_code ec ); | (1) | (since C++17)
filesystem_error( const std::string& what_arg, const std::filesystem::path& p1, std::error_code ec ); | (2) | (since C++17)
filesystem_error( const std::string& what_arg, const std::filesystem::path& p1, const std::filesystem::path& p2, std::error_code ec ); | (3) | (since C++17)
filesystem_error( const filesystem_error& other ) noexcept; | (4) | (since C++17)

Constructs a new `filesystem_error` object.

1-3) The error code is set to ec and optionally, the paths that were involved in the operation that resulted in the error, are set to p1 and p2. `what()` after construction returns a string that contains what_arg (assuming that it does not contain an embedded null character ). If either or both `path` arguments are not provided, a null `path` is used instead.
4) Copy constructor. Initialize the contents with those of `other`. If *this and other both have dynamic type `std::filesystem_error::filesystem_error` then std::strcmp(what(), other.what()) == 0.

### Parameters

what_arg | - | explanatory string
ec | - | error code for the specific operating system dependent error
p1, p2 | - | paths involved in the operation raising system error
other | - | another `filesystem_error` object to copy

### Notes

Because copying `std::filesystem::filesystem_error` is not permitted to throw exceptions, the explanatory string is typically stored internally in a separately-allocated reference-counted storage. This is also why there is no constructor taking `std::string&&`: it would have to copy the content anyway.

Typical implementations also store `path` objects referenced by path1() and path2() in the reference-counted storage.

### Example

| This section is incomplete Reason: no example

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/filesystem/filesystem_error/filesystem_error&oldid=156761"