std::domain_error

std::domain_error (정의역 오류 예외)

수학적 정의역(domain) 밖의 값을 함수가 받았을 때 던져지는 논리 오류 예외예요. 예를 들어 음수의 제곱근을 구하려는 등, 정의역을 벗어난 연산을 나타내요.

출처: cppreference

본문

<stdexcept> 헤더에 정의돼 있고, std::logic_error에서 파생되는 예외예요.

class domain_error : public logic_error;

std::domain_error는 오류가 함수의 수학적 정의역을 벗어난 값으로 인해 발생했음을 나타내는 예외예요. std::logic_error에서 파생되므로, 실행 전에(논리적으로) 검출 가능한 논리 오류 계열로 분류돼요.

생성자:

  • explicit domain_error( const std::string& what_arg );
  • explicit domain_error( const char* what_arg );
  • 인자로 준 문자열이 what()에서 반환될 설명이에요.

예를 들어 아크사인(arcsin) 함수가 [-1, 1] 밖의 입력을 받는 경우처럼, 함수가 받을 수 없는 정의역 밖의 값을 받았을 때 이 예외를 던질 수 있어요.

#include <stdexcept>
#include <cmath>

double arcsin_deg(double x)
{
    if (x < -1.0 || x > 1.0)
        throw std::domain_error("arcsin 정의역 밖의 값");
    return std::asin(x);
}

더 알아보기 (Learn more)

cppreference