Exception handling
[Common]

Classes

class  Dune::Exception
 Base class for Dune-Exceptions. More...
struct  Dune::ExceptionHook
 Base class to add a hook to the Dune::Exception. More...
class  Dune::IOError
 Default exception class for I/O errors. More...
class  Dune::MathError
 Default exception class for mathematical errors. More...
class  Dune::RangeError
 Default exception class for range errors. More...
class  Dune::NotImplemented
 Default exception for dummy implementations. More...
class  Dune::SystemError
 Default exception class for OS errors. More...
class  Dune::OutOfMemoryError
 Default exception if memory allocation fails. More...
class  Dune::InvalidStateException
 Default exception if a function was called while the object is not in a valid state for that function. More...
class  Dune::ParallelError
 Default exception if an error in the parallel communication of the programm occurred. More...

Files

file  exceptions.hh
 

A few common exception classes.


Defines

#define DUNE_THROW(E, m)

Functions

void Dune::Exception::message (const std::string &msg)
 store string in internal message buffer
virtual const char * Dune::Exception::what () const noexcept
 output internal message buffer
static void Dune::Exception::registerHook (ExceptionHook *hook)
 add a functor which is called before a Dune::Exception is emitted (see Dune::ExceptionHook)
static void Dune::Exception::clearHook ()
 remove all hooks
virtual void Dune::ExceptionHook::operator() ()=0
std::ostream & Dune::operator<< (std::ostream &stream, const Exception &e)

Detailed Description

The Dune-exceptions are designed to allow a simple derivation of subclasses and to accept a text written in the '<<' syntax.

Example of usage:

     #include <dune/common/exceptions.hh>

     ...

     class FileNotFoundError : public Dune::IOError {};

     ...

     void fileopen (std::string name) {
     std::ifstream file;

     file.open(name.c_str());

     if (file == 0)
      DUNE_THROW(FileNotFoundError, "File " << name << " not found!");

     ...

     file.close();
     }

     ...

     int main () {
     try {
      ...
     } catch (Dune::IOError &e) {
      std::cerr << "I/O error: " << e << std::endl;
      return 1;
     } catch (Dune::Exception &e) {
      std::cerr << "Generic Dune error: " << e << std::endl;
      return 2;
     }
     }
See also:
exceptions.hh for detailed info

Define Documentation

#define DUNE_THROW ( E,
 ) 
Value:
do { E th__ex; std::ostringstream th__out; \
                              th__out << THROWSPEC(E) << m; th__ex.message(th__out.str()); throw th__ex; \
} while (0)

Macro to throw an exception

Parameters:
E exception class derived from Dune::Exception
m reason for this exception in ostream-notation

Example:

     if (filehandle == 0)
      DUNE_THROW(FileError, "Could not open " << filename << " for reading!");

DUNE_THROW automatically adds information about the exception thrown to the text.

Note:
you can add a hook to be called before a Dune::Exception is emitted, e.g. to add additional information to the exception, or to invoke a debugger during parallel debugging. (see Dune::ExceptionHook)

Function Documentation

void Dune::Exception::clearHook (  )  [static, inherited]

remove all hooks

void Dune::Exception::message ( const std::string &  msg  )  [inherited]

store string in internal message buffer

virtual void Dune::ExceptionHook::operator() (  )  [pure virtual, inherited]
std::ostream& Dune::operator<< ( std::ostream &  stream,
const Exception &  e 
) [inline]
void Dune::Exception::registerHook ( ExceptionHook hook  )  [static, inherited]

add a functor which is called before a Dune::Exception is emitted (see Dune::ExceptionHook)

See also:
Dune::ExceptionHook
const char * Dune::Exception::what (  )  const [virtual, inherited]

output internal message buffer

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 25 Mar 2018 for dune-common by  doxygen 1.6.1