std::error_category
std::error_category (오류 카테고리)
오류 코드·오류 조건의 의미를 정의하는 카테고리를 나타내는 기초 클래스예요. 오류 코드의 이름, 메시지, 기본 오류 조건 등을 제공해요. std::error_code·std::error_condition의 근간이에요. C++11부터 있어요.
출처: cppreference
본문
<system_error> 헤더에 정의돼 있고, 오류 카테고리 기초 클래스예요.
class error_category;
std::error_category는 특정 오류 코드 시스템(카테고리)의 특성을 정의하는 추상 기초 클래스예요. 각 std::error_code·std::error_condition은 자기 카테고리의 error_category 객체를 가리켜요. 카테고리가 다르면 같은 정수 값이라도 다른 의미를 가져요.
멤버 함수:
name() const noexcept: 카테고리의 이름을 돌려줘요 (예:"generic","system").message(int) const: 주어진 코드 값의 설명 문자열을 돌려줘요. (순수 가상 — 카테고리가 구현해야 함.)default_error_condition(int) const: 주어진 코드 값이 나타내는 기본std::error_condition을 돌려줘요.equivalent(int, const error_condition&) const,equivalent(const error_code&, int) const: 코드가 특정 조건과 동등한지 판정해요.- 연산자
operator==/operator!=: 카테고리 객체가 같은지 비교해요(주소 비교).
표준 라이브러리는 두 개의 표준 카테고리 객체를 제공해요.
std::generic_category()— POSIXerrno도메인(포팅 가능한 오류).std::system_category()— 플랫폼 특정 시스템 오류.
사용자는 자체 카테고리를 만들려면 error_category를 상속받고 name()과 message()를 구현할 수 있어요. 다만 표준은 보통 실제로 커스텀 카테고리를 직접 만드는 대신 std::is_error_code_enum/std::is_error_condition_enum 특수화와 make_error_code/make_error_condition 오버로드로 열거 타입을 오류 코드 시스템에 연결하도록 권장해요.
#include <system_error>
#include <iostream>
std::cout << std::generic_category().name() << '\n'; // "generic"