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

FreeBSD Manual Pages

  
 
  

home | help
std::ios_base::failure(3)     C++ Standard Libary    std::ios_base::failure(3)

NAME
       std::ios_base::failure -	std::ios_base::failure

Synopsis
	  Defined in header <ios>
	  class	failure;

	  The class std::ios_base::failure defines an exception	object that is
       thrown on
	  failure by the functions in the Input/Output library.

	  std::ios_base::failure may be	defined	either as a member class of
	  std::ios_base	 or  as	 a  synonym  (typedef)	for another class with
       (since C++17)
	  equivalent functionality.

	  std-ios base-failure-2003-inheritance.svg
						    (until C++11)
		     Inheritance diagram
	  std-ios base-failure-inheritance.svg
						    (since C++11)
		     Inheritance diagram

Member functions
	  constructor	constructs a new failure object	with the given message
			(public	member function)
	  operator=	replaces the failure object
			(public	member function)
	  what		returns	the explanatory	string
			(public	member function)

       std::ios_base::failure::failure

	  explicit failure(  const  std::string&  message  );		(until
       C++11)
	  explicit failure( const std::string& message,
			    const   std::error_code&  ec  =		(since
       C++11)
	  std::io_errc::stream );
	  explicit failure( const char*	message,	   (1)
			    const  std::error_code&  ec	 =	   (2)	(since
       C++11)
	  std::io_errc::stream );
	  failure(    const    failure&	  other	  );			   (3)
       (until C++11)
	  failure(	const	   failure&	 other	     )	     noexcept;
       (since C++11)

	  1,2)	Constructs  the	 exception object using	message	as explanation
       string which can
	  later	be retrieved using what().
	  ec is	used to	identify the specific reason for the failure.
	  (since C++11)
	  3) Copy constructor. Initialize the contents with those of other.
	  If *this and other both  have	 dynamic  type	std::ios_base::failure
       then
	  std::strcmp(what(), other.what()) == 0.
	  (since C++11)

Parameters
	  message - explanatory	string
	  ec	  - error code to identify the specific	reason for the failure
	  other	  - another failure to copy

Notes
	  Because copying std::ios_base::failure is not	permitted to throw ex-
       ceptions, this
	  message  is  typically  stored  internally as	a separately-allocated
       reference-counted
	  string.  This	 is  also  why	there	is   no	  constructor	taking
       std::string&&: it would have
	  to copy the content anyway.

       std::ios_base::failure::operator=

	  failure& operator=( const failure& other );		(until C++11)
	  failure& operator=( const failure& other ) noexcept;	(since C++11)

	  Assigns the contents with those of other.
	  If  *this  and  other	 both have dynamic type	std::ios_base::failure
       then
	  std::strcmp(what(), other.what()) == 0 after assignment.
	  (since C++11)

Parameters
	  other	- another exception object to assign with

Return value
	  *this

       std::ios_base::failure::what

	  virtual const	char* what() const throw();   (until C++11)
	  virtual const	char* what() const noexcept;  (since C++11)

	  Returns the explanatory string.

Parameters
	  (none)

Return value
	  Pointer to a null-terminated string  with  explanatory  information.
       The string is
	  suitable  for	 conversion and	display	as a std::wstring. The pointer
       is guaranteed to
	  be valid at least until the exception	object from which  it  is  ob-
       tained is destroyed,
	  or until a non-const member function (e.g. copy assignment operator)
       on the
	  exception object is called.

Notes
	  Implementations are allowed but not required to override what().

       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
	  Before  the  resolution of LWG issue 331, std::ios_base::failure de-
       clared a	destructor
	  without throw(),  where  std::exception::~exception()	 was  declared
       with throw()^[1].
	  This	means  the std::ios_base::failure::~failure() had a weaker ex-
       ception
	  specification. The resolution	is to remove that declaration so  that
       the non-throwing
	  exception specification is kept.

	  LWG  issue  363 targets the same defect and its resolution is	to add
       throw() to the
	  declaraion of	 std::ios_base::failure::~failure().  That  resolution
       was not applied
	  due to the confict between the two resolutions.

	   1.	The  non-throwing exception specification is now applied glob-
       ally across the
	      standard library,	so the destructors of standard library classes
       are not
	      declared with throw() or noexcept.

Example
       // Run this code

	#include <fstream>
	#include <iostream>

	int main()
	{
	    std::ifstream f("doesn't exist");

	    try
	    {
		f.exceptions(f.failbit);
	    }
	    catch (const std::ios_base::failure& e)
	    {
		std::cout << "Caught an	ios_base::failure.\n"
			  << "Explanatory string: " << e.what()	<< '\n'
			  << "Error code: " << e.code()	<< '\n';
	    }
	}

Possible output:
	Caught an ios_base::failure.
	Explanatory string: ios_base::clear: unspecified iostream_category er-
       ror
	Error code: iostream:1

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	     Applied	to		 Behavior     as     published
       Correct behavior
			     the constructor overload (1) initialized
	  LWG 48  C++98	     the base class std::exception		corre-
       sponding
			     with  msg,	 but  the base class does not have de-
       scription removed
			     a matching	constructor
	  LWG 331 C++98	     std::ios_base::failure  declared  a	   re-
       moved the destructor
			     destructor	without	throw()			decla-
       ration

See also
	  io_errc the IO stream	error codes
	  (C++11) (enum)

http://cppreference.com		  2024.06.10	     std::ios_base::failure(3)

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

home | help