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
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] operator 요약 (0) | 2022.01.06 |
---|---|
[C++] 계산기 만들기 (5) the driver (0) | 2022.01.06 |
[C++] 계산기 만들기 (3) low-level input (0) | 2022.01.06 |
[C++] 계산기 만들기 (2) input (0) | 2022.01.06 |
[C++] 계산기 만들기 (1) parser (4) | 2022.01.05 |