Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

FXExtendedException.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *                  Enhanced Exception usage                                     *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2003 by Mathew Robertson.   All Rights Reserved.                *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 *********************************************************************************/
00022 #ifndef FXEXTENDEDEXCEPTION_H
00023 #define FXEXTENDEDEXCEPTION_H
00024 
00025 #ifndef FXEXCEPTION_H
00026 #include <fox/FXException.h>
00027 using namespace FX;
00028 #endif
00029 namespace FXEX {
00030 class FXExtendedException;
00031 
00032 /**
00033  * Extended exception class heirachy + some helper functions
00034  */
00035 
00036 /// show an exception description using a dialog box
00037 void show(FXWindow *owner,const FXException &ex);
00038 void show(FXWindow *owner,const FXExtendedException &ex);
00039 
00040 /// generic extended/enhanced exception
00041 class FXAPI FXExtendedException : public FXErrorException {
00042 private:
00043   static const FXchar exceptionName[];
00044   FXint code;
00045 public:
00046   FXExtendedException(FXint e=0):FXErrorException(FXExtendedException::exceptionName),code(e){}
00047   FXExtendedException(const FXchar* msg,FXint e=0):FXErrorException(msg),code(e){}
00048   FXint error() const { return code; }
00049   };
00050 
00051 /// generic thread exception
00052 class FXAPI FXThreadException : public FXExtendedException {
00053 private:
00054   static const FXchar exceptionName[];
00055 public:
00056   FXThreadException(FXint e=0):FXExtendedException(FXThreadException::exceptionName,e){}
00057   FXThreadException(const FXchar *msg,FXint e=0):FXExtendedException(msg,e){}
00058   };
00059 
00060 /// FXThreadFatal : thrown in the event of a fatal error
00061 class FXAPI FXThreadFatal : public FXThreadException {
00062 private:
00063   static const FXchar exceptionName[];
00064 public:
00065   FXThreadFatal(FXint e=0) : FXThreadException(FXThreadFatal::exceptionName,e){}
00066   FXThreadFatal(const FXchar *msg,FXint e=0) : FXThreadException(msg,e){}
00067   };
00068 
00069 /// FXThreadInvalid : thrown when an operation is invoked with invalid arguments
00070 class FXAPI FXThreadInvalid : public FXThreadException {
00071 private:
00072   static const FXchar exceptionName[];
00073 public:
00074   FXThreadInvalid() : FXThreadException(FXThreadInvalid::exceptionName,0){}
00075   };
00076 
00077 /// Exception thrown by FXDatabase... interface
00078 class FXDatabaseException : public FXExtendedException {
00079 private:
00080   static const FXchar exceptionName[];
00081 public:
00082   FXDatabaseException(FXint e=0):FXExtendedException(FXDatabaseException::exceptionName,e){}
00083   FXDatabaseException(const FXchar *msg,FXint e=0):FXExtendedException(msg,e){}
00084   };
00085 
00086 } // namespace FXEX
00087 #endif // FXEXTENDEDEXCEPTION_H