C++
[C++] 에러코드를 메세지로 format하기
index1207
2023. 11. 17. 14:16
Format을 왜 해야 할까
winapi나 다른 운영체제의 api를 사용하다 보면 애러가 날 때 애러 메시지가 아니라 에러코드를 리턴한다. 따라서 이 애러가 무슨 애러인지 알기 위해서는 구글링으로 애러코드를 검색해야 한다.
애러코드를 메시지로
구글링으로 메시지를 알아내도 되지만 매번 검색하기는 귀찮다는 문제가 있다.
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errCode, /* 애러 코드 */
0,
(LPTSTR)&errorMessage, /* 애러 메세지 */
0,
NULL);
winapi에서는 애러코드를 메시지로 변환해 주는 FormatMessage라는 함수가 있다. 하지만 이 함수를 호출하기 위해서는 복잡한 인수가 들어간다. 또 크로스플랫폼을 개발하기 위해 또 그 os에서의 애러코드 변환 코드를 작성해줘야 한다.
이를 개선하기 위해서는 C++ 표준에 있는 운영체제 애러코드를 메시지로 변환해 주는 함수를 사용하면 된다.
auto errorMessage = std::system_category().message(errCode);