exception.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Exception Handling support header for -*- C++ -*-
  2. // Copyright (C) 2016-2022 Free Software Foundation, Inc.
  3. //
  4. // This file is part of GCC.
  5. //
  6. // GCC is free software; you can redistribute it and/or modify
  7. // it under the terms of the GNU General Public License as published by
  8. // the Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10. //
  11. // GCC is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU General Public License for more details.
  15. //
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19. // You should have received a copy of the GNU General Public License and
  20. // a copy of the GCC Runtime Library Exception along with this program;
  21. // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  22. // <http://www.gnu.org/licenses/>.
  23. /** @file bits/exception.h
  24. * This is an internal header file, included by other library headers.
  25. * Do not attempt to use it directly.
  26. */
  27. #ifndef __EXCEPTION_H
  28. #define __EXCEPTION_H 1
  29. #pragma GCC system_header
  30. #pragma GCC visibility push(default)
  31. #include <bits/c++config.h>
  32. extern "C++" {
  33. namespace std
  34. {
  35. /**
  36. * @defgroup exceptions Exceptions
  37. * @ingroup diagnostics
  38. * @since C++98
  39. *
  40. * Classes and functions for reporting errors via exceptions.
  41. * @{
  42. */
  43. /**
  44. * @brief Base class for all library exceptions.
  45. *
  46. * This is the base class for all exceptions thrown by the standard
  47. * library, and by certain language expressions. You are free to derive
  48. * your own %exception classes, or use a different hierarchy, or to
  49. * throw non-class data (e.g., fundamental types).
  50. */
  51. class exception
  52. {
  53. public:
  54. exception() _GLIBCXX_NOTHROW { }
  55. virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
  56. #if __cplusplus >= 201103L
  57. exception(const exception&) = default;
  58. exception& operator=(const exception&) = default;
  59. exception(exception&&) = default;
  60. exception& operator=(exception&&) = default;
  61. #endif
  62. /** Returns a C-style character string describing the general cause
  63. * of the current error. */
  64. virtual const char*
  65. what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
  66. };
  67. /// @}
  68. } // namespace std
  69. }
  70. #pragma GCC visibility pop
  71. #endif