00001 /**************************************************************************
00002 Copyright (c) 2000-2001, Tony Garnock-Jones
00003 All rights reserved.
00004
00005 Redistribution and use in source and binary forms, with or without
00006 modification, are permitted provided that the following conditions are
00007 met:
00008
00009 * Redistributions of source code must retain the above copyright
00010 notice, this list of conditions and the following disclaimer.
00011
00012 * Redistributions in binary form must reproduce the above
00013 copyright notice, this list of conditions and the following
00014 disclaimer in the documentation and/or other materials provided
00015 with the distribution.
00016
00017 * Neither the names of the copyright holders nor the names of this
00018 software's contributors may be used to endorse or promote
00019 products derived from this software without specific prior
00020 written permission.
00021
00022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00025 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
00026 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00027 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00028 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00029 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00030 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00031 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033 **************************************************************************/
00034
00035 /* -*- c++ -*- */
00036 #ifndef MPS_Exception_H
00037 #define MPS_Exception_H
00038
00039 #include <exception>
00040
00041 namespace MPS {
00042
00043 /**
00044 * Base class for most exceptions thrown by MPS. */
00045 class MPSException: public std::exception {
00046 private:
00047 string _message; ///< Message explaining the exception condition.
00048 public:
00049 MPSException() {}
00050 MPSException(string const &message)
00051 : _message(message)
00052 {}
00053
00054 string const &getMessage() const { return _message; }
00055 char const *what() const { return _message.c_str(); }
00056 };
00057
00058 /**
00059 * Superclass of all exceptions throwable by MPS interface
00060 * implementations. */
00061 class UserException: public MPSException {
00062 public:
00063 UserException()
00064 : MPSException("UserException thrown")
00065 {}
00066 };
00067
00068 /**
00069 * Thrown when reading from a closed Connection or a too-short
00070 * InputStream. */
00071 class MPSConnectionClosedException: public MPSException {
00072 public:
00073 MPSConnectionClosedException() {}
00074 MPSConnectionClosedException(string const &when)
00075 : MPSException("Connection closed: " + when)
00076 {}
00077 };
00078
00079 }
00080
00081 #endif
1.2.6 written by Dimitri van Heesch,
© 1997-2001