Namespaces
Variants

std::bad_exception

cppreference.net에서
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐기됨)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
스왑 및 형식 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 형식
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
 
헤더 <exception>
class bad_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의 모든 멤버 함수는 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