EPICS ARCHIVER V4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups
Public Member Functions | List of all members
GenericException Class Reference

Generic Exception: Base class for exceptions. More...

#include <GenericException.h>

Inheritance diagram for GenericException:
ArchiveException

Public Member Functions

 GenericException (const char *sourcefile, size_t line)
 Construct with file and line info.
 
 GenericException (const char *sourcefile, size_t line, const char *format,...) __attribute__((format(printf
 Construct with file, line info and printf-type arguments.
 
virtual ~GenericException () throw ()
 Virtual destructor to allow inheritance.
 
virtual const char * what () const throw ()
 Retrieve an explanatory string. More...
 
const char * getSourceFile () const
 Source file where exception was thrown.
 
size_t getSourceLine () const
 Line in source file where exception was thrown.
 
const std::string & getDetail () const
 Return detail text (if set)
 

Detailed Description

Generic Exception: Base class for exceptions.

An exception that provided info text with sourcefile & line information.

All exceptions should be thrown as an object/reference, not pointer, and also caught by reference, to avoid unnecessary copies and assert de-allocation:

 try
 {
     ... throw GenericException(__FILE__, __LINE__, "Trouble at mill!");
 }
 catch (GenericException &e)
 {
     ... somehow print  e.what() ...
 }

(According to Scott Meyers "More Effective C++", a copy will be thrown, but Visual C++ seems to efficiently throw without copying).

It's a good idea to print the exception information as given above with the e.what() - string on a new line. That line will then usually read "filename (line-#)" and this format allows easy lookup from within IDEs. The error string might include newlines and usually also ends in one.

Member Function Documentation

virtual const char* GenericException::what ( ) const
throw (
)
virtual

Retrieve an explanatory string.

Default implementation will print source file and line.


The documentation for this class was generated from the following file: