std::error_code
std::error_code (오류 코드)
운영체제·저수준 API의 오류 코드를 저장·비교·설명하는 타입이에요. 정수 오류 값과 카테고리(error category) 포인터를 결합해, 같은 값이라도 카테고리가 다르면 별개의 오류로 취급돼요. C++11부터 있어요.
출처: cppreference
본문
<system_error> 헤더에 정의돼 있고, 오류 코드를 나타내는 타입이에요.
class error_code;
std::error_code는 운영체제나 저수준 인터페이스에서 온 오류 코드를 나타내요. 내부적으로 정수형 오류 값(int)과 std::error_category에 대한 포인터를 보관해요. 카테고리 덕분에 같은 정수 값이라도 서로 다른 오류 시스템(예: POSIX vs Win32)에서는 구별돼요.
멤버 함수:
- (생성자)
error_code()(기본),error_code(int, const error_category&), 템플릿 생성자(Enum→ErrorCodeEnum 변환) 등. operator int()/value(): 저장된 오류 코드의 정수 값을 돌려줘요.category(): 오류 코드의 카테고리를 돌려줘요.message(): 이 코드의 사람이 읽을 수 있는 설명 문자열을 돌려줘요.default_error_condition(): 이 코드에 대응되는std::error_condition을 돌려줘요.clear(): 코드를 0으로 초기화해요.assign(int, const error_category&): 코드를 설정해요.operator==/operator!=: 두 코드를 비교해요. (값과 카테고리가 모두 같아야 같아요.)operator bool: 코드가 0이 아닌지(오류 존재) 확인해요.
일반적인 사용 패턴:
#include <system_error>
#include <iostream>
std::error_code ec;
// 예: 어떤 연산 수행, 실패 시 ec에 오류 설정
if (ec)
std::cout << "Error: " << ec.message() << " (" << ec.value() << ")\n";
std::error_code는 값 타입으로 복사·대입이 자유롭고, C 함수의 반환 코드나 시스템 호출 실패를 객체로 캡슐화하는 데 널리 쓰여요. std::system_error 예외가 내부에 error_code를 담아요.