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