[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언어에서는 예외 처리를 위한 고유한 기능을 제공하지는 않지만, 위와 같은 방법을 사용하여 라이브러리 함수 호출 시 발생하는 예외 상황을 처리할 수 있습니다.

참고 자료: