[shell] 오류 코드를 사용한 예외 처리

프로그램을 작성하다 보면 예외 상황을 다룰 필요가 있습니다. 오류 코드를 사용하여 예외 상황을 처리하는 방법을 알아보겠습니다.

1. 오류 코드 정의

먼저, 프로그램에서 발생할 수 있는 각 예외 상황에 대해 고유한 오류 코드를 정의해야 합니다. 일반적으로 양수인 경우 성공을 나타내고, 음수인 경우 오류를 나타냅니다.

# Python
ERROR_FILE_NOT_FOUND = -1
ERROR_PERMISSION_DENIED = -2
// C
#define ERROR_FILE_NOT_FOUND -1
#define ERROR_PERMISSION_DENIED -2

2. 오류 코드 반환

함수나 메서드에서 오류가 발생했을 때 이를 호출자에게 알리기 위해 해당 오류 코드를 반환합니다. 호출자는 이를 통해 적절한 조치를 취할 수 있습니다.

# Python
def read_file(file_path):
    try:
        # 파일 읽기 시도
        # ...
        return data
    except FileNotFoundError:
        return ERROR_FILE_NOT_FOUND
    except PermissionError:
        return ERROR_PERMISSION_DENIED
// C
int read_file(const char* file_path, char* data, size_t data_size) {
    // 파일 읽기 시도
    // ...
    if (file_not_found) {
        return ERROR_FILE_NOT_FOUND;
    } else if (permission_denied) {
        return ERROR_PERMISSION_DENIED;
    } else {
        return 0; // 성공
    }
}

3. 오류 코드 처리

호출자는 함수나 메서드가 반환한 오류 코드를 검사하여 적절한 조치를 취합니다. 이를 통해 프로그램의 안정성을 높일 수 있습니다.

# Python
file_path = "example.txt"
result = read_file(file_path)

if result == ERROR_FILE_NOT_FOUND:
    print("파일을 찾을 수 없습니다.")
elif result == ERROR_PERMISSION_DENIED:
    print("파일에 대한 권한이 없습니다.")
else:
    process_data(result)
// C
char data[100];
const char* file_path = "example.txt";
int result = read_file(file_path, data, sizeof(data));

if (result == ERROR_FILE_NOT_FOUND) {
    printf("파일을 찾을 수 없습니다.");
} else if (result == ERROR_PERMISSION_DENIED) {
    printf("파일에 대한 권한이 없습니다.");
} else {
    process_data(result);
}

이와 같이 오류 코드를 사용하여 예외 상황을 처리할 수 있습니다. 이 방법은 매우 효과적이지만, 오류 코드를 무시하거나 잘못 처리할 경우 예기치 않은 동작이 발생할 수 있으므로 주의가 필요합니다.

참고 자료