일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 악성코드
- meta
- c++
- request
- windows
- HTML
- Kafka
- Call-by-reference
- CSS
- System
- OOP
- function
- WebProgramming
- jsp
- query
- 윈도우즈
- CLASS
- API
- 자료구조
- 포인터
- C
- array
- algorithm
- UTF-8
- beans
- 노드
- JavaScript
- 투자
- java
- Sort
Archives
- Today
- Total
hahahia
오류의 확인(GetLastError 함수) 본문
GetLastError 함수와 에러코드
- 오류가 발생했을 때, 이어서 바로 GetLastError 함수를 호출하면 오류의 원인에 해당하는 에러코드를 얻을 수 있다.
DWORD GetLastError(void); // NULL값으로 반환하면 오류가 발생했음을 알 수 있지 만 원인을 알 수 없다.
MSDN을 참조하면 시스템 에러코드의 종류와 해당 에러코드가 의미하는 바를 알 수 있다. 예제를 통해 시스템 에러코드를 얻는 방법을 보자.
ex1)
/* GetLastError.cpp */
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(void)
{
HANDLE hFile = CreateFile(_T("ABC.DAT"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL); // Windows system 함수
// CreateFile함수는 함수호출이 실패할 경우 INVALID_HANDLE_VALUE를 반환
// CreateFile함수는 함수호출이 실패할 경우 INVALID_HANDLE_VALUE를 반환
if(hFile == INVALID_HANDLE_VALUE)
{
_tprintf(_T("error code: %d\n"), GetLastError());
return 0;
}
return 0;
} 실행결과
error code : 2 // 이 에러코드를 MSDN에서 확인해보면
// "The system cannot find the file specified." 파일이 없음
ex2)
/* ErrorStateChange.cpp */
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(void)
{
HANDLE hFile = CreateFile(_T("ABC.DAT"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
_tprintf(_T("error code : %d\n"), GetLastError()); //파일을 개방. 존재하지 않으므로 오류발생
hFile = CreateFile(_T("ABC2.DAT"), GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW,
FILE_ATTRIBUTE_NORMAL, NULL); //ABC2.DAT 파일 생성
_tprintf(_T("error code : %d\n"), GetLastError()); // 오류확인 이상 무
return 0;
} 실행결과
error code : 2 // "The system cannot find the file specified." 파일이 없음
error code : 0 // "The operation completed successfully" 이상없음.
위의 ErrorStateChange.cpp 파일을 다시한번 실행해보자..
그렇게되면 실행결과는
error code : 2
error code : 80 // "The file exists." 생성하고자 하는 파일 ABC2.DAT파일이 이미 존 재하기 때문에 함수 호출이 실패하였다.(생성하고자 하는 파일이 이 미 존재하면 함수 호출이 실패하도록 전달인자를 설정함)
출처. 윈도우즈 프로그래밍 | 윤성우 저 | 한빛미디어
'Windows Programming > Windows::System' 카테고리의 다른 글
프로세스와 스케줄링 및 컨텍스트 스위칭 (0) | 2012.03.06 |
---|---|
명령 프롬프트(cmd) 만들기 (3) | 2012.03.02 |
64bit 기반 프로그래밍 (0) | 2012.03.02 |
아스키코드 vs 유니코드(02. MBCS와 WBCS의 동시 지원) (0) | 2012.03.02 |
아스키코드 vs 유니코드(01. Windows에서의 유니코드(UNICODE)) (0) | 2012.03.02 |
Comments