Namespaces
Variants

std:: bad_exception

From cppreference.net
Utilities library
헤더에 정의됨 <exception>
class bad_exception : public exception

std::bad_exception 는 C++ 런타임이 다음과 같은 상황에서 발생시키는 예외의 타입입니다:

  • 만약 std::exception_ptr 가 포착된 예외의 복사본을 저장하고 있고, std::current_exception 에 의해 포착된 예외 객체의 복사 생성자가 예외를 던지면, 포착된 예외는 std::bad_exception 의 인스턴스입니다.
(C++11부터)
  • 만약 동적 예외 명세 가 위반되고 std::unexpected 가 예외를 던지거나 다시 던져서 여전히 예외 명세를 위반하지만, 예외 명세가 std::bad_exception 을 허용하는 경우, std::bad_exception 이 던져집니다.
(C++17까지)
cpp/error/exception std-bad exception-inheritance.svg

상속 다이어그램

std::bad_exception 의 모든 멤버 함수는 constexpr 입니다.

(C++26부터)

목차

멤버 함수

bad_exception 객체를 생성합니다
(public member function)
객체를 복사합니다
(public member function)
[virtual]
설명 문자열을 반환합니다
(virtual public member function)

std:: exception 로부터 상속됨

멤버 함수

[virtual]
예외 객체를 파괴함
( std::exception 의 virtual public 멤버 함수)
[virtual]
설명 문자열을 반환함
( std::exception 의 virtual public 멤버 함수)

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_constexpr_exceptions 202411L (C++26) constexpr 예외 타입

예제

C++14 또는 이전 모드에서만 컴파일됩니다 (경고가 발생할 수 있음).

#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';
    {
{

가능한 출력:

Caught std::bad_exception