SYNOPSIS

#include <bobcat/exception>
Linking option: -lbobcat

DESCRIPTION

FBB::Exception objects derived from std::exception, but accept
stream insertions. Their intended use consists of throwing an anonymous
object, into which the text of the std::exception::what
message has been inserted.

NAMESPACE

FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.

INHERITS FROM

std::exception

ENUMERATION

The enumeration Protection is used by the member protection
described below. The enumeration has two values:

ANY: an existing file may have any set of protection bits;

EQUAL: an existing file mut have exactly the set of protection bits
as specified when calling Exception::protection.

CONSTRUCTORS

Exception():
The default constructor

Exception(int errnoValue):
This constructor stores the provided errnoValue value in the global
::errno variable, provided by the run-time support system.
Move and copy constructors are available.

MEMBER FUNCTIONS

All members of std::exception are
available, as FBB::Exception inherits from this class.

char const *what() const noexcept(true) override:
Returns the text that was inserted into the FBB::Exception object.

OVERLOADED OPERATORS

Exception &&operator<<(Exception &&in, Type const &t):
A function template implementing the overloaded insertion operator. It
can be used to insert values of any type that can also be inserted into an
ostringstream object.
The overloaded assignment and move assignment operators are available.

STATIC MEMBERS

The following convenience functions can be used for controlled opening of
stream-type objects, like std::ofstream and std::ifstream. These
stream-type objects must support open and close members, like those
provided by std::ifstream and std::ofstream.

If the stream was already open it is first closed.

If opening fails an FBB::Exception exception is thrown containing a
short message stating that the named stream could not be opened.

static size_t protection(std::string const &path, size_t protect,
Protection type = EQUAL):
Returns the protection bits (cf. open(2)) of path. The
protect parameter is used to specify the requested protection
bits. This value is usually specified as an octal value. If the
specified value exceeds 0777 an exception is thrown. The third
parameter is only used in combination with already existing files. If
specified as ANY the file's actual permission bits are not
compared with protect; if specified as EQUAL the file's
permission bits must be identical to protect, or an exception is
thrown. If path does not yet exist a file path with permission
protect is created. This member returns path's permission
bits.

If path is created by protection, then opening a stream for
path does not change path's protection.

MANIPULATOR

The following manipulator (which is not part of the
FBB::Exception, class, but is defined in the FBB namespace) can be
inserted into the FBB::Exception object:

FBB::errnodescr:
The descriptive text associated with the current errno value is
inserted into the FBB::Exception object (it can also be used to insert the
descriptive text in a std::ostream object). No text is inserted if
errno equals zero. This manipulator is thread-safe (but errno may be
modified when errno holds an invalid value).