[C++] The C++ Programming Language: 2. A Tour of C++: The Basics (2)
2.4.3 Error Handling 에러 핸들링은 언어 기능의 한참 너머에, 프로그래밍 기법과 도구들까지 영향을 줄 수 있는 거대하고 복잡한 주제입니다. 하지만 C++는 이를 도울 수 있는 몇 가지 기능들을 제공하죠. 자료형 체계도 역시 그 스스로의 역할을 하고 있습니다. 내장 자료형과 구문들을 이용해서 힘겹게 응용프로그램을 작성하는 것보다는, 더 많은 자료형들과 알고리즘들을 적절히 개발하는 것이 더 좋죠. 이는 우리의 프로그래밍을 단순화시킵니다. 실수할 여지를 줄여주죠. 또한 컴파일러가 에러들을 잡아낼 기회 역시 부여합니다. 대부분의 C++ 구조는 효율적인 추상화와 우아한 구현 및 설계에 집중합니다. 이러한 모듈화와 추상화의 효과 중 하나는 런타임 에러를 감지하는 지점과 이를 처리하는 지점을 분리할 수 있다는 점입니다. 프로그램이 커질수록, 라이브러리가 확장될수록, 에러를 처리하기 위한 표준은 중요해집니다. 2.4.3.1 Exceptions Vector 예제를 다시 떠올려보죠. 2.3.2절의 벡터 범위를 넘어가는(out-of-range) 요소에 접근하려고 할 때 우리가 어떻게 해야할까요? Vector의 작성자는 이 경우에 사용자가 어떠한 것을 하려고 하는 것인지 알 수 없습니다. (심지어, 어떤 프로그램에서 vector가 실행되고 있는지도 알 수 없죠) Vector의 사용자는 지속적으로 문제를 감지할 수 없습니다. (만약 가능했다면, 애초에 범위를 벗어나는 접근을 하지도 않았겠죠. 문제가 어디서 발생하는지 알기 어렵다는 것입니다.-옮긴 이) 이 문제의 해결책은 Vector 구현자가 out-of-range 접근을 시도했을 때 이를 감지하고 사용자에게 말해주는 것입니다. 사용자는 이를 가로채 적절히 행위할 수 있죠. 예를 들어, Vector::operator[]()는 out-of-range 접근을 시도했을 때 이를 감지하고 out_of_range 예외를 던집니다. 1 ...