Namespaces
Variants

std:: bad_exception

From cppreference.net
Utilities library
Definiert im Header <exception>
class bad_exception : public exception

std::bad_exception ist der Typ der Ausnahme, die von der C++-Laufzeitumgebung in den folgenden Situationen ausgelöst wird:

  • Falls std::exception_ptr eine Kopie der gefangenen Exception speichert und wenn der Kopierkonstruktor des Exception-Objekts, das von std::current_exception gefangen wurde, eine Exception wirft, ist die erfasste Exception eine Instanz von std::bad_exception .
(since C++11)
  • Falls eine dynamische Exception-Spezifikation verletzt wird und std::unexpected eine Exception wirft oder erneut wirft, die weiterhin die Exception-Spezifikation verletzt, aber die Exception-Spezifikation std::bad_exception erlaubt, wird std::bad_exception geworfen.
(until C++17)
cpp/error/exception std-bad exception-inheritance.svg

Vererbungsdiagramm

Alle Memberfunktionen von std::bad_exception sind constexpr .

(seit C++26)

Inhaltsverzeichnis

Memberfunktionen

konstruiert das bad_exception Objekt
(öffentliche Elementfunktion)
kopiert das Objekt
(öffentliche Elementfunktion)
[virtual]
gibt die erklärende Zeichenkette zurück
(virtuelle öffentliche Elementfunktion)

Geerbt von std:: exception

Elementfunktionen

[virtual]
zerstört das Exception-Objekt
(virtuelle öffentliche Elementfunktion von std::exception )
[virtual]
gibt einen erläuternden String zurück
(virtuelle öffentliche Elementfunktion von std::exception )

Hinweise

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

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