Namensräume
Varianten
Aktionen

std::bad_exception

Von cppreference.com
< cpp‎ | error
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
 
Definiert in Header <exception>
class bad_exception;

std::bad_exception ist der Typ der Ausnahme, die zur Laufzeit von C++ in folgenden Situationen ausgelöst wird.

  • Wenn std::exception_ptr eine Kopie der abgefangenen Ausnahme speichert und wenn der Kopierkonstruktor des von std::current_exception abgefangenen Ausnahmeobjekts eine Ausnahme auslöst, ist die erfasste Ausnahme eine Instanz von std::bad_exception.
(seit C++11)
  • Wenn eine dynamische Ausnahmespezifikation verletzt wird und std::unexpected eine Ausnahme auslöst oder erneut auslöst, die die Ausnahmespezifikation immer noch verletzt, die Ausnahmespezifikation jedoch std::bad_exception zulässt, wird std::bad_exception ausgelöst.
(bis C++17)
cpp/error/exceptionstd-bad exception-inheritance.svg

Vererbungdiagramm

Alle Memberfunktionen von std::bad_exception sind constexpr.

(seit C++26)

Inhalt

[bearbeiten] Memberfunktionen

konstruiert das bad_exception-Objekt
(öffentliche Memberfunktion)
kopiert das Objekt
(öffentliche Memberfunktion)
[virtuell]
gibt den erklärenden String zurück
(virtuelle öffentliche Memberfunktion)

Abgeleitet von std::exception

Memberfunktionen

[virtuell]
zerstört das Ausnahmeobjekt
(virtuelle öffentliche Memberfunktion von std::exception) [bearbeiten]
[virtuell]
gibt einen erklärenden String zurück
(virtuelle öffentliche Memberfunktion von std::exception) [bearbeiten]

[bearbeiten] Hinweise

Feature-Test-Makro Wert Std Feature
__cpp_lib_constexpr_exceptions 202411L (C++26) constexpr für Ausnahme-Typen

[bearbeiten] Beispiel

Kompiliert nur in C++14- oder früheren Modi (kann Warnungen ausgeben).

#include <exception>
#include <iostream>
#include <stdexcept>
 
void my_unexp()
{
    throw;
}
 
void test()
    throw(std::bad_exception) // Dynamic exception specifications
                              // are deprecated in C++11
{
    throw std::runtime_error("test");
}
 
int main()
{
    std::set_unexpected(my_unexp); // Deprecated in C++11, removed in C++17
 
    try
    {
        test();
    }
    catch (const std::bad_exception& e)
    {
        std::cerr << "Caught " << e.what() << '\n';
    }
}

Mögliche Ausgabe

Caught std::bad_exception