00001 /********************************************************************** 00002 * $Id: GEOSException.h 1820 2006-09-06 16:54:23Z mloskot $ 00003 * 00004 * GEOS - Geometry Engine Open Source 00005 * http://geos.refractions.net 00006 * 00007 * Copyright (C) 2001-2002 Vivid Solutions Inc. 00008 * Copyright (C) 2006 Refractions Research Inc. 00009 * 00010 * This is free software; you can redistribute and/or modify it under 00011 * the terms of the GNU Lesser General Public Licence as published 00012 * by the Free Software Foundation. 00013 * See the COPYING file for more information. 00014 * 00015 **********************************************************************/ 00016 00017 #ifndef GEOS_UTIL_GEOSEXCEPTION_H 00018 #define GEOS_UTIL_GEOSEXCEPTION_H 00019 00020 #include <stdexcept> 00021 #include <string> 00022 00023 namespace geos { 00024 namespace util { // geos.util 00025 00033 class GEOSException: public std::exception { 00034 00035 std::string _msg; 00036 00037 public: 00038 00039 GEOSException() 00040 : 00041 _msg("Unknown error") 00042 {} 00043 00044 GEOSException(std::string const& msg) 00045 : 00046 _msg(msg) 00047 {} 00048 00049 GEOSException(std::string const& name, std::string const& msg) 00050 : 00051 _msg(name+": "+msg) 00052 {} 00053 00054 virtual ~GEOSException() throw() 00055 {} 00056 00057 const char* what() const throw() 00058 { 00059 return _msg.c_str(); 00060 } 00061 00062 }; 00063 00064 } // namespace geos.util 00065 } // namespace geos 00066 00067 #endif // GEOS_UTIL_GEOSEXCEPTION_H 00068 00069 /********************************************************************** 00070 * $Log$ 00071 * Revision 1.4 2006/05/22 15:08:01 strk 00072 * Print colon after exception name (as it has always been) 00073 * 00074 * Revision 1.3 2006/04/05 09:34:20 strk 00075 * GEOSException derived from std::exception again, hopefully the correct way now 00076 * 00077 * Revision 1.2 2006/04/04 08:16:46 strk 00078 * Changed GEOSException hierarchy to be derived from std::runtime_exception. 00079 * Removed the GEOSException::toString redundant method (use ::what() instead) 00080 * 00081 * Revision 1.1 2006/03/09 16:46:49 strk 00082 * geos::geom namespace definition, first pass at headers split 00083 * 00084 **********************************************************************/