본문 바로가기

Programming/C++

에러 핸들링(Error Handling)

window함수들은 반환형을 가지고 있다.

반환타입은 대개 함수의 성공과 실패를 나타내는 데 쓰이며, 각 자료형의 의미는 다음과 같다.

 자료형

실패했을 때의 값 

 VOID

이 함수는 절대 실패 하지 않는다.

 BOOL

성공시 0이 아닌 값, 실패하면 0 (주의 : 성공시 0이 아닌 값이기에 TRUE(1)과 비교하지 말자)

 HANDLE

 성공시 유효한 핸들, 실패하면 0(NULL) or (INVALID_HANDLE_VALUE)                       실패의 경우가 나뉘므로 SDK를 참조하여 프로그래밍을 하자.

 PVOID 

 성공시 데이터를 저장하고 있는 메모리 주소를 반환, 실패시 NULL반환

 LONG/DWORD 

 HANDLE과 마찬가지로 실패의 경우가 각 함수마다 다르므로 SDK를 참조하여 프로그래밍을 하자.

함수가 실패하는 경우에는 전달받은 매개변수가 유효하지 않을때, 다른 이유(네트워크나 힙이 가득찻을 경우 등등)으로 기능을 수행하지

못했을때가 있다.

 

::GetLastError();

위의 표에서 윈도우함수가 반환하는 타입에 따라 함수의 성공과 실패를 알 수있다고 했다.

그렇지만, 프로그래밍을 하다보면 예외처리를 해주어야 하는데 이 예외 처리라는게 해당함수의 성공과 실패에 따라 결정 되기때문에

해당기능(함수)이 왜 실패 했는지 알아 내는 과정이 필요하다.

이때 GetLastError()함수를 호출하면 가장 최근에 호출된 함수의 에러코드를 가져오게 된다.

<error코드는 WinError.h에 정의 되어있다.>

 

※Error code를 보는방법.

 :GetLastError함수는 에러코드를 반환하는데 이 에러코드의 개수는 일일이 찾기 어려울 만큼 많다.

   따라서, 이 에러코드가 무엇인지 바로 확인 할수 있는 방법을 소개 하고자 한다.

 

1)Watch(조사식)

 : 에러코드의 값을 디버깅을 하면서 볼 수 있다. 조사식 창에다가 $err,hr을 입력하면 현재 에러코드값을 볼 수있다.

  단축키는 디버깅중 Ctrl+Alt+1,2,3,4

 

2)Error Lookup

:에러코드의 값을 입력하면 에러코드에 관한 정보가 출력되는 창이다, 기본적으로 visual studio에 내장되어 있으며

  도구>>오류조회를 선택하면 볼 수 있다.

 

 

 

 

 

 

'Programming > C++' 카테고리의 다른 글

[C++11] Rvalue Reference #2 - Move Semantics  (0) 2013.01.23
Lvalue Rvalue  (1) 2013.01.21
this pointer  (0) 2012.09.16
error C2065: 'IDD_Main_DIALOG' : 선언되지 않은 식별자입니다.  (0) 2012.07.25
Bitmap File구조  (0) 2009.09.19