Program Language/C & C++

[C++] 계산기 만들기 (4) error handling

야곰야곰+책벌레 2022. 1. 6. 10:51
728x90
반응형

Error Handling

오류를 감지하고 보고하는 것은 항상 중요하다. 그러나 이 프로그램의 경우 간단한 오류 처리 전략으로 충분하다. error() 함수는 단순히 오류를 계산하고 오류 메시지를 작성한 후 다음을 반환한다.

int no_of_errors;
double error(const string& s)
{
	no_of_errors++;
	cerr << "error: " << s << '\n';
	return 1;
}

스트림 cerr은 일반적으로 오류를 보고하는 데 사용되는 버퍼링 되지 않은 출력 스트림이다.

값을 반환하는 이유는 일반적으로 표현식 평가 중에 오류가 발생하기 때문에 해당 평가를 완전히 중단하거나 후속 오류를 일으킬 가능성이 낮은 값을 반환해야 한다. 후자는 이 예제에 적합하다. Token_stream::get()이 줄 번호를 계속 추적했다면 error()는 오류가 발생한 대략적인 위치를 사용자에게 알릴 수 있다. 이것은 계산기가 비대화형으로 사용될 때 유용할 것이다.

보다 일반적인 오류 처리 전략은 오류 감지와 오류 복구를 분리한다. 이것은 exception을 사용하여 구현할 수 있지만 지금의 것은 180줄의 코드를 가진 계산기에 매우 적합하다.

728x90
반응형