• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file op_exception.h
3  * exception base class
4  *
5  * This provide simple base class for exception object. All
6  * exception are derived from directly or indirectly from
7  * std::exception. This class are not itended to be catched
8  * in your code except at top level, derive what you want
9  * and catch derived class rather.
10  *
11  * @remark Copyright 2003 OProfile authors
12  * @remark Read the file COPYING
13  *
14  * @author Philippe Elie
15  * @author John Levon
16  */
17 
18 #ifndef OP_EXCEPTION_H
19 #define OP_EXCEPTION_H
20 
21 #include <stdexcept>
22 #include <string>
23 
24 
25 /**
26  * exception abstract base class
27  */
28 class op_exception : public std::exception {
29 public:
30 	explicit op_exception(std::string const& msg);
31 	~op_exception() throw() = 0;
32 
33 	char const * what() const throw();
34 private:
35 	std::string message;
36 };
37 
38 
39 /**
40  * fatal exception, never catch it except at top level (likely main or
41  * gui). Intended to replace cerr << "blah"; exit(EXIT_FAILURE); by a
42  * throw op_fatal_error("blah") when returning error code is not an option
43  */
44 struct op_fatal_error : op_exception
45 {
46 	explicit op_fatal_error(std::string const & msg);
47 };
48 
49 /**
50  * Encapsulate a runtime error with or w/o a valid errno
51  */
52 struct op_runtime_error : std::runtime_error
53 {
54 	explicit op_runtime_error(std::string const & err);
55 	op_runtime_error(std::string const & err, int cerrno);
56 	~op_runtime_error() throw();
57 };
58 
59 
60 #endif /* !OP_EXCEPTION_H */
61