GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::filesystem::filesystem_error(3) C++ Standard Libary std::filesystem::filesystem_error(3)

std::filesystem::filesystem_error - std::filesystem::filesystem_error


Defined in header <filesystem>
class filesystem_error; (since C++17)


The class std::filesystem::filesystem_error defines an exception object that is
thrown on failure by the throwing overloads of the functions in the filesystem
library.


std-filesystem-filesystem error-inheritance.svg


Inheritance diagram

Member functions


constructor constructs the exception object
(public member function)
operator= replaces the exception object
(public member function)
path1 returns the paths that were involved in the operation that caused the
path2 error
(public member function)
what returns the explanatory string
(public member function)

Inherited from std::system_error

Member functions


code returns error code
(public member function of std::system_error)
what returns an explanatory string
[virtual] (virtual public member function of std::system_error)

Inherited from std::runtime_error

Inherited from std::exception

Member functions


destructor destroys the exception object
[virtual] (virtual public member function of std::exception)
what returns an explanatory string
[virtual] (virtual public member function of std::exception)


In order to ensure that copy functions of filesystem_error are noexcept, typical
implementations store an object holding the return value of what() and two
std::filesystem::path objects referenced by path1() and path2() respectively in a
separately-allocated reference-counted storage.


Currently the MS STL implementation is non-conforming: objects mentioned above are
stored directly in the filesystem object, which makes the copy functions not
noexcept.

// Run this code


#include <system_error>
#include <filesystem>
#include <iostream>


int main()
{
const std::filesystem::path from{"/nonexistent1/a"}, to{"/nonexistent2/b"};
try {
std::filesystem::copy_file(from, to); // throws: files do not exist
}
catch(std::filesystem::filesystem_error const& ex) {
std::cout
<< "what(): " << ex.what() << '\n'
<< "path1(): " << ex.path1() << '\n'
<< "path2(): " << ex.path2() << '\n'
<< "code().value(): " << ex.code().value() << '\n'
<< "code().message(): " << ex.code().message() << '\n'
<< "code().category(): " << ex.code().category().name() << '\n';
}


// All functions have non-throwing equivalents
std::error_code ec;
std::filesystem::copy_file(from, to, ec); // does not throw
std::cout << "\nnon-throwing form sets error_code: " << ec.message() << '\n';
}


what(): filesystem error: cannot copy file: No such file or directory [/nonexistent1/a] [/nonexistent2/b]
path1(): "/nonexistent1/a"
path2(): "/nonexistent2/b"
code().value(): 2
code().message(): No such file or directory
code().category(): generic


non-throwing form sets error_code: No such file or directory

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.