Exception.h.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. /*
  2.  *  OpenKore C++ Standard Library
  3.  *  Copyright (C) 2006  VCL
  4.  *
  5.  *  This library is free software; you can redistribute it and/or
  6.  *  modify it under the terms of the GNU Lesser General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2.1 of the License, or (at your option) any later version.
  9.  *
  10.  *  This library is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  *  Lesser General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU Lesser General Public
  16.  *  License along with this library; if not, write to the Free Software
  17.  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  18.  *  MA  02110-1301  USA
  19.  */
  20. #ifndef _OSL_EXCEPTION_H_
  21. #define _OSL_EXCEPTION_H_
  22. #include <stdlib.h>
  23. #include <exception>
  24. #include "Object.h"
  25. #include "Threading/Mutex.h"
  26. namespace OSL {
  27. /**
  28.  * An exception object. Unlike std::exception, this class allows
  29.  * the creator to specify an error message and an error code.
  30.  *
  31.  * This class guarantees thread-safety.
  32.  *
  33.  * @class Exception OSL/Exception.h
  34.  * @ingroup Base
  35.  */
  36. class Exception: public Object, public std::exception {
  37. private:
  38. mutable Mutex mutex;
  39. mutable char *m_message;
  40. int m_code;
  41. public:
  42. /**
  43.  * Create a new Exception object.
  44.  *
  45.  * @param message The exception message, which may be NULL.
  46.  *                This string will be internally copied.
  47.  *                If no message is given, a default one will
  48.  *                be generated.
  49.  * @param code    The exception code.
  50.  * @post
  51.  *     if message != NULL:
  52.  *         strcmp( getMessage(), message ) == 0
  53.  * @post
  54.  *     getCode() == code
  55.  */
  56. Exception(const char *message = NULL, int code = 0);
  57. virtual ~Exception() throw();
  58. /**
  59.  * Returns the exception message.
  60.  */
  61. virtual const char *getMessage() const throw();
  62. /**
  63.  * Returns the exception code.
  64.  */
  65. virtual int getCode() const throw();
  66. // Inherited from std::exception
  67. virtual const char *what() const throw();
  68. };
  69. }
  70. #endif /* _OSL_EXCEPTION_H_ */