00001 #ifndef _qpid_ExceptionHolder_h
00002 #define _qpid_ExceptionHolder_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <Exception.h>
00023 #include <boost/shared_ptr.hpp>
00024
00025 namespace qpid {
00026
00038 class ExceptionHolder : public Exception, public boost::shared_ptr<Exception>
00039 {
00040 public:
00041 typedef boost::shared_ptr<Exception> shared_ptr;
00042
00043 ExceptionHolder() throw() {}
00044 ExceptionHolder(Exception* p) throw() : shared_ptr(p) {}
00045 ExceptionHolder(shared_ptr p) throw() : shared_ptr(p) {}
00046
00047 ExceptionHolder(const Exception& e) throw() : shared_ptr(e.clone()) {}
00048 ExceptionHolder(const std::exception& e);
00049
00050 ~ExceptionHolder() throw() {}
00051
00052 const char* what() const throw() { return (*this)->what(); }
00053 std::string toString() const throw() { return (*this)->toString(); }
00054 virtual Exception* clone() const throw() { return (*this)->clone(); }
00055 virtual void throwSelf() const { (*this)->throwSelf(); }
00056 };
00057
00058 }
00059
00060
00061
00062 #endif