| /** |
| * @file op_exception.h |
| * exception base class |
| * |
| * This provide simple base class for exception object. All |
| * exception are derived from directly or indirectly from |
| * std::exception. This class are not itended to be catched |
| * in your code except at top level, derive what you want |
| * and catch derived class rather. |
| * |
| * @remark Copyright 2003 OProfile authors |
| * @remark Read the file COPYING |
| * |
| * @author Philippe Elie |
| * @author John Levon |
| */ |
| |
| #ifndef OP_EXCEPTION_H |
| #define OP_EXCEPTION_H |
| |
| #include <stdexcept> |
| #include <string> |
| |
| |
| /** |
| * exception abstract base class |
| */ |
| class op_exception : public std::exception { |
| public: |
| explicit op_exception(std::string const& msg); |
| ~op_exception() throw() = 0; |
| |
| char const * what() const throw(); |
| private: |
| std::string message; |
| }; |
| |
| |
| /** |
| * fatal exception, never catch it except at top level (likely main or |
| * gui). Intended to replace cerr << "blah"; exit(EXIT_FAILURE); by a |
| * throw op_fatal_error("blah") when returning error code is not an option |
| */ |
| struct op_fatal_error : op_exception |
| { |
| explicit op_fatal_error(std::string const & msg); |
| }; |
| |
| /** |
| * Encapsulate a runtime error with or w/o a valid errno |
| */ |
| struct op_runtime_error : std::runtime_error |
| { |
| explicit op_runtime_error(std::string const & err); |
| op_runtime_error(std::string const & err, int cerrno); |
| ~op_runtime_error() throw(); |
| }; |
| |
| |
| #endif /* !OP_EXCEPTION_H */ |