0.6.0-1 release
[manu/suphp.git] / src / Exception.hpp
1 /*
2     suPHP - (c)2002-2005 Sebastian Marsching <sebastian@marsching.com>
3
4     This file is part of suPHP.
5
6     suPHP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     suPHP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with suPHP; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #ifndef SUPHP_EXCEPTION_H
22
23 namespace suPHP {
24     class Exception;
25 };
26
27 #define SUPHP_EXCEPTION_H
28
29 #include <string>
30 #include <iostream>
31
32 namespace suPHP {
33     /**
34      * Parent class for exceptions.
35      * All exceptions are derived from this class.
36      */
37     class Exception {
38     private:
39         std::string message;
40         std::string backtrace;
41         int line;
42         std::string file;
43         virtual std::string getName() const =0;
44         
45     public:
46         /**
47          * Constructor without message.
48          */
49         Exception(std::string file, int line);
50
51         /**
52          * Constructor with message.
53          */
54         Exception(std::string message, std::string file, int line);
55         
56         /**
57          * Constructor without message but with cause.
58          */
59         Exception(Exception& cause, std::string file, int line);
60         
61         /**
62          * Constructor with message and cause.
63          */
64         Exception(std::string message, Exception& cause, std::string file, int line);
65         
66         /**
67          * Get the message
68          */
69         std::string getMessage();
70
71         /**
72          * Get string representing the exception
73          */
74         std::string toString() const;
75     };
76
77 std::ostream& operator<<(std::ostream& os, const Exception& e);
78
79 };
80
81 #endif // SUPHP_EXCEPTION_H