stdexcept
上传用户:sichengcw
上传日期:2009-02-17
资源大小:202k
文件大小:3k
源码类别:

STL

开发平台:

Visual C++

  1. // Methods for Exception Support for -*- C++ -*-
  2. // Copyright (C) 1994, 1995, 1997 Free Software Foundation
  3. // This file is part of the GNU ANSI C++ Library.  This library is free
  4. // software; you can redistribute it and/or modify it under the
  5. // terms of the GNU General Public License as published by the
  6. // Free Software Foundation; either version 2, or (at your option)
  7. // any later version.
  8. // This library is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. // GNU General Public License for more details.
  12. // You should have received a copy of the GNU General Public License
  13. // along with this library; see the file COPYING.  If not, write to the Free
  14. // Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  15. // As a special exception, if you link this library with files
  16. // compiled with a GNU compiler to produce an executable, this does not cause
  17. // the resulting executable to be covered by the GNU General Public License.
  18. // This exception does not however invalidate any other reasons why
  19. // the executable file might be covered by the GNU General Public License.
  20. // Written by Mike Stump based upon the specification in the 20 September 1994
  21. // C++ working paper, ANSI document X3J16/94-0158.
  22. #ifndef __STDEXCEPT__
  23. #define __STDEXCEPT__
  24. #ifdef __GNUG__
  25. #pragma interface "stdexcept"
  26. #endif
  27. #include <exception>
  28. #include <string>
  29. extern "C++" {
  30. #ifdef __HONOR_STD
  31. namespace std {
  32. #endif
  33. class logic_error : public exception {
  34.   string _what;
  35. public:
  36.   logic_error(const string& what_arg): _what (what_arg) { }
  37.   virtual const char* what () const { return _what.c_str (); }
  38. };
  39. class domain_error : public logic_error {
  40. public:
  41.   domain_error (const string& what_arg): logic_error (what_arg) { }
  42. };
  43. class invalid_argument : public logic_error {
  44. public:
  45.   invalid_argument (const string& what_arg): logic_error (what_arg) { }
  46. };
  47. class length_error : public logic_error {
  48. public:
  49.   length_error (const string& what_arg): logic_error (what_arg) { }
  50. };
  51. class out_of_range : public logic_error {
  52. public:
  53.   out_of_range (const string& what_arg): logic_error (what_arg) { }
  54. };
  55. class runtime_error : public exception {
  56.   string _what;
  57. public:
  58.   runtime_error(const string& what_arg): _what (what_arg) { }
  59.   virtual const char* what () const { return _what.c_str (); }
  60. protected:
  61.   runtime_error(): exception () { }
  62. };
  63. class range_error : public runtime_error {
  64. public:
  65.   range_error (const string& what_arg): runtime_error (what_arg) { }
  66. };
  67. class overflow_error : public runtime_error {
  68. public:
  69.   overflow_error (const string& what_arg): runtime_error (what_arg) { }
  70. };
  71. class underflow_error : public runtime_error {
  72. public:
  73.   underflow_error (const string& what_arg): runtime_error (what_arg) { }
  74. };
  75. #ifdef __HONOR_STD
  76. } // namespace std
  77. #endif
  78.  
  79. } // extern "C++"
  80. #endif