1*52a38012Sejakowatz // Exception 2*52a38012Sejakowatz 3*52a38012Sejakowatz #ifndef EXCEPTION_H 4*52a38012Sejakowatz #define EXCEPTION_H 5*52a38012Sejakowatz 6*52a38012Sejakowatz #include <stdarg.h> 7*52a38012Sejakowatz #include <stdio.h> 8*52a38012Sejakowatz 9*52a38012Sejakowatz #include <String.h> 10*52a38012Sejakowatz 11*52a38012Sejakowatz class Exception { 12*52a38012Sejakowatz public: 13*52a38012Sejakowatz // constructor Exception()14*52a38012Sejakowatz Exception() 15*52a38012Sejakowatz : fError(B_OK), 16*52a38012Sejakowatz fDescription() 17*52a38012Sejakowatz { 18*52a38012Sejakowatz } 19*52a38012Sejakowatz 20*52a38012Sejakowatz // constructor Exception(BString description)21*52a38012Sejakowatz Exception(BString description) 22*52a38012Sejakowatz : fError(B_OK), 23*52a38012Sejakowatz fDescription(description) 24*52a38012Sejakowatz { 25*52a38012Sejakowatz } 26*52a38012Sejakowatz 27*52a38012Sejakowatz // constructor Exception(const char * format,...)28*52a38012Sejakowatz Exception(const char* format,...) 29*52a38012Sejakowatz : fError(B_OK), 30*52a38012Sejakowatz fDescription() 31*52a38012Sejakowatz { 32*52a38012Sejakowatz va_list args; 33*52a38012Sejakowatz va_start(args, format); 34*52a38012Sejakowatz SetTo(B_OK, format, args); 35*52a38012Sejakowatz va_end(args); 36*52a38012Sejakowatz } 37*52a38012Sejakowatz 38*52a38012Sejakowatz // constructor Exception(status_t error)39*52a38012Sejakowatz Exception(status_t error) 40*52a38012Sejakowatz : fError(error), 41*52a38012Sejakowatz fDescription() 42*52a38012Sejakowatz { 43*52a38012Sejakowatz } 44*52a38012Sejakowatz 45*52a38012Sejakowatz // constructor Exception(status_t error,BString description)46*52a38012Sejakowatz Exception(status_t error, BString description) 47*52a38012Sejakowatz : fError(error), 48*52a38012Sejakowatz fDescription(description) 49*52a38012Sejakowatz { 50*52a38012Sejakowatz } 51*52a38012Sejakowatz 52*52a38012Sejakowatz // constructor Exception(status_t error,const char * format,...)53*52a38012Sejakowatz Exception(status_t error, const char* format,...) 54*52a38012Sejakowatz : fError(error), 55*52a38012Sejakowatz fDescription() 56*52a38012Sejakowatz { 57*52a38012Sejakowatz va_list args; 58*52a38012Sejakowatz va_start(args, format); 59*52a38012Sejakowatz SetTo(error, format, args); 60*52a38012Sejakowatz va_end(args); 61*52a38012Sejakowatz } 62*52a38012Sejakowatz 63*52a38012Sejakowatz // copy constructor Exception(const Exception & exception)64*52a38012Sejakowatz Exception(const Exception& exception) 65*52a38012Sejakowatz : fError(exception.fError), 66*52a38012Sejakowatz fDescription(exception.fDescription) 67*52a38012Sejakowatz { 68*52a38012Sejakowatz } 69*52a38012Sejakowatz 70*52a38012Sejakowatz // destructor ~Exception()71*52a38012Sejakowatz ~Exception() 72*52a38012Sejakowatz { 73*52a38012Sejakowatz } 74*52a38012Sejakowatz 75*52a38012Sejakowatz // SetTo SetTo(status_t error,BString description)76*52a38012Sejakowatz void SetTo(status_t error, BString description) 77*52a38012Sejakowatz { 78*52a38012Sejakowatz fError = error; 79*52a38012Sejakowatz fDescription.SetTo(description); 80*52a38012Sejakowatz } 81*52a38012Sejakowatz 82*52a38012Sejakowatz // SetTo SetTo(status_t error,const char * format,va_list arg)83*52a38012Sejakowatz void SetTo(status_t error, const char* format, va_list arg) 84*52a38012Sejakowatz { 85*52a38012Sejakowatz char buffer[2048]; 86*52a38012Sejakowatz vsprintf(buffer, format, arg); 87*52a38012Sejakowatz SetTo(error, BString(buffer)); 88*52a38012Sejakowatz } 89*52a38012Sejakowatz 90*52a38012Sejakowatz // GetError GetError()91*52a38012Sejakowatz status_t GetError() const 92*52a38012Sejakowatz { 93*52a38012Sejakowatz return fError; 94*52a38012Sejakowatz } 95*52a38012Sejakowatz 96*52a38012Sejakowatz // GetDescription GetDescription()97*52a38012Sejakowatz const char* GetDescription() const 98*52a38012Sejakowatz { 99*52a38012Sejakowatz return fDescription.String(); 100*52a38012Sejakowatz } 101*52a38012Sejakowatz 102*52a38012Sejakowatz private: 103*52a38012Sejakowatz status_t fError; 104*52a38012Sejakowatz BString fDescription; 105*52a38012Sejakowatz }; 106*52a38012Sejakowatz 107*52a38012Sejakowatz #endif // EXCEPTION_H 108