Provided by: libbobcat-dev_4.08.02-2build1_amd64 bug

NAME

       FBB::Exception - std::exception objects acception stream insertions

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.

       Exception  exceptions  are  thrown  by  several  Bobcat  classes.  These  classes are Arg,
       ArgConfig,  BigInt,  Cgi,  Cidr,  ClientSocket,   CmdFinderBase,   ConfigFile,   DateTime,
       DecryptBuf,   DigestBuf,   EncryptBuf,   Fork,   GetHostent,   Glob,   HMacBuf,  Hostname,
       LocalClientSocket, LocalServerSocket, LocalSocketBase,  Log,  MailHeaders,  Mbuf,  Milter,
       Mstream,   OFoldStreambuf,   OneKey,   Pattern,   Pipe,   Process,  Redirector,  Selector,
       ServerSocket, Signal, SocketBase, Stat, TempStream, User, Xpointer

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:

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

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

CONSTRUCTORS

       o      Exception():
              The default constructor (assigns 0 to FBB::g_errno, see the next constructor).

       o      Exception(int errnoValue):
              This  constructor  stores  the provided errnoValue value in a thread-local variable
              int FBB::g_errno. Before Bobcat 4.04.00 errnoValue was only stored  in  the  global
              ::errno  variable  (it  still  is), but as this variable is also used by many other
              functions, errno’s value may have changed by the time the exception is caught.  The
              thread_local int FBB::g_errno variable does not have that drawback.

              When g_errno must be declared without including  bobcat/exception then do

                  namespace FBB
                  {
                      extern thread_local int g_errno;
                  }

       Move and copy constructors are available.

MEMBER FUNCTIONS

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

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

OVERLOADED OPERATORS

       o      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.

       o      static void open(StreamType &stream, std::string const &name):
              Opens the stream object, using its default open member.

       o      static void open(int errnoValue, StreamType &stream, std::string const &name):
              Opens the stream object, using its default  open  member.  If  opening  the  stream
              fails, then the thrown FBB::Exception assigns errnoValue to ::errno.

       o      static  void  open(StreamType  &stream, std::string const &name, std::ios::openmode
              mode):
              Opens the stream object, using its open member, passing mode to open.

       o      static void open(int  errnoValue,  StreamType  &stream,  std::string  const  &name,
              std::ios::openmode mode):
              Opens  the  stream  object, using its open member, passing mode to open. If opening
              the stream fails, then the thrown FBB::Exception assigns errnoValue to ::errno.

       o      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:

       o      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).

EXAMPLE

           if (exceptionalCondition)
               throw FBB::Exception(1) << "Exceptional condition occurred";

FILES

       bobcat/exception - defines the class interface

SEE ALSO

       bobcat(7)

BUGS

       None Reported.

DISTRIBUTION FILES

       o      bobcat_4.08.02-x.dsc: detached signature;

       o      bobcat_4.08.02-x.tar.gz: source archive;

       o      bobcat_4.08.02-x_i386.changes: change log;

       o      libbobcat1_4.08.02-x_*.deb: debian package holding the libraries;

       o      libbobcat1-dev_4.08.02-x_*.deb:  debian  package holding the libraries, headers and
              manual pages;

       o      http://sourceforge.net/projects/bobcat: public archive location;

BOBCAT

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

COPYRIGHT

       This is free software, distributed under the terms  of  the  GNU  General  Public  License
       (GPL).

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).