Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::filesy...system_error(3) C++ Standard Libarystd::filesy...system_error(3)

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

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

	  The class std::filesystem::filesystem_error defines an exception ob-
       ject 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)

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

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

Example
       // Run this code

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

	int main()
	{
	    const std::filesystem::path	from{"/nonexistent1/a"}, to{"/nonexis-
       tent2/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.mes-
       sage() << '\n';
	}

Possible output:
	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

http://cppreference.com		  2022.07.31	 std::filesy...system_error(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::filesystem::filesystem_error&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help