[c언어] 라이브러리의 예외 상황 처리 방법
C언어 프로그래밍에서는 라이브러리 함수 호출 시 발생할 수 있는 예외 상황을 처리하는 방법에 대해 알아봅니다.
1. 오류 코드 반환
C언어에서는 일반적으로 라이브러리 함수가 예외 상황을 처리할 때 오류 코드를 반환합니다. 호출자는 이 오류 코드를 검사하여 예외 상황을 처리합니다. 대표적으로 errno
변수를 사용하여 함수 호출의 오류 여부를 확인하는 방법이 있습니다.
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("file.txt", "r");
if (fp == NULL) {
perror("Error opening file");
} else {
// 파일 처리 로직
}
return 0;
}
2. 예외 처리 함수 등록
어떤 라이브러리에서는 예외 처리 함수를 등록하여 예외 상황을 처리할 수 있는 기능을 제공합니다. 이러한 방식을 사용하면 호출자가 직접 오류 코드를 검사하는 번거로움을 덜 수 있습니다.
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
void handle_error() {
longjmp(buf, 1);
}
int main() {
if (setjmp(buf)) {
perror("Error opening file");
} else {
FILE *fp;
fp = fopen("file.txt", "r");
if (fp == NULL) {
handle_error();
} else {
// 파일 처리 로직
}
}
return 0;
}
C언어에서는 예외 처리를 위한 고유한 기능을 제공하지는 않지만, 위와 같은 방법을 사용하여 라이브러리 함수 호출 시 발생하는 예외 상황을 처리할 수 있습니다.
참고 자료:
- “The C Programming Language” - Brian W. Kernighan, Dennis M. Ritchie
- “C Programming: Language Foundations” - Deitel & Associates, Inc.