더북(TheBook)

1.6.2.2 던지기

더 나은 접근법은 예외를 던지는(throw) 방법이다.

matrix read_matrix_file(const char* fname, ...)
{
    fstream f(fname);
    if (!f.is_open())
        throw "Cannot open file.";
    ...
}

이 버전에서는 예외가 발생한다. 이 함수를 호출하는 애플리케이션은 이제 예외에 응답해야 한다. 그렇지 않으면, 크래시가 발생한다.

오류 코드에 대한 예외 처리의 이점은 우리가 처리할 수 있는 문제만 신경 쓰면 된다는 점이다. 예를 들어 read_matrix_file이라는 함수에서 존재하지 않는 파일을 처리하지 않을 수도 있다. 이 경우, 예외가 발생하지 않으므로 코드를 실행한다. 따라서 우리는 오류 코드를 반환해 프로그램을 난독화할 필요가 없다. 예외가 발생한 경우, 적절한 예외 처리로 전달한다. 이러한 처리는 우리의 시나리오에서 사용자가 새 파일을 요청하는 GUI에 포함할 수 있다. 따라서 예외는 동시에 읽을 수 있는 소스와 보다 안정적인 오류 처리로 이어진다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.