Collaboration diagram for Exception handling:

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 occured. More...

Files

file  exceptions.hh
 

A few common exception classes.


Defines

#define DUNE_THROW(E, m)

Functions

void Dune::Exception::message (const std::string &message)
 store string in internal message buffer
const std::string & Dune::Exception::what () const
 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)
 Dune::Exception::Exception ()

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,
  m 
)
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)

Referenced by Dune::DebugStream< thislevel, dlevel, alevel, activator >::attach(), Dune::BitSetVector< block_size, Allocator >::BitSetVector(), Dune::InterfaceBuilder::buildInterface(), Dune::DebugStream< thislevel, dlevel, alevel, activator >::detach(), Dune::FMatrixHelp::eigenValues(), Dune::DenseMatrix< DynamicMatrix< K > >::exists(), Dune::MPIGuard::finalize(), Dune::GeometryType::GeometryType(), Dune::ParameterTree::get(), Dune::RemoteIndexListModifier< T, A, mode >::insert(), Dune::istl_assign_to_fmatrix(), Dune::DenseMatrix< DynamicMatrix< K > >::mmhv(), Dune::DenseMatrix< DynamicMatrix< K > >::mmtv(), Dune::DenseMatrix< DynamicMatrix< K > >::mmv(), Dune::DenseMatrix< DynamicMatrix< K > >::mtv(), Dune::DenseMatrix< DynamicMatrix< K > >::mv(), Dune::bigunsignedint< k >::operator/(), Dune::operator<<(), Dune::ParameterTree::operator[](), Dune::ParameterTree::Parser< T >::parse(), Dune::ConfigParser::parseFile(), Dune::ParameterTree::parseRange(), Dune::ConfigParser::parseStream(), Dune::FiniteStack< T, n >::pop(), Dune::DebugStream< thislevel, dlevel, alevel, activator >::pop(), Dune::ParameterTreeParser::readINITree(), Dune::RemoteIndexListModifier< T, A, mode >::remove(), Dune::RemoteIndexListModifier< T, A, mode >::repairLocalIndexPointers(), Dune::ParameterTree::sub(), Dune::DebugStream< thislevel, dlevel, alevel, activator >::tie(), Dune::DenseMatrix< DynamicMatrix< K > >::umhv(), Dune::DenseMatrix< DynamicMatrix< K > >::umtv(), Dune::DenseMatrix< DynamicMatrix< K > >::umv(), Dune::DebugStream< thislevel, dlevel, alevel, activator >::untie(), Dune::DenseMatrix< DynamicMatrix< K > >::usmhv(), Dune::DenseMatrix< DynamicMatrix< K > >::usmtv(), Dune::DenseMatrix< DynamicMatrix< K > >::usmv(), Dune::DebugStream< thislevel, dlevel, alevel, activator >::~DebugStream(), Dune::fmatrix_assigner< T, n, m >::~fmatrix_assigner(), and Dune::fvector_assigner< T, s >::~fvector_assigner().


Function Documentation

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

remove all hooks

Dune::Exception::Exception (  )  [inline, inherited]
void Dune::Exception::message ( const std::string &  message  )  [inline, 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  )  [inline, static, inherited]

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

See also:
Dune::ExceptionHook
const std::string & Dune::Exception::what (  )  const [inline, inherited]

output internal message buffer

Referenced by Dune::operator<<().

Generated on Fri Apr 29 2011 with Doxygen (ver 1.7.1) [doxygen-log,error-log].