C++를 사용하면 문자열, 숫자, 사용자 정의 타입 등 모든 타입을 예외로 처리할 수 있다. 그러나 예외를 적절하게 처리하려면 예외 타입을 정의하거나 표준 라이브러리의 메소드를 사용하는 게 좋다.
struct cannot_open_file { }; void read_matrix_file(const char* fname, ...) { fstream f(fname); if (!f.is_open()) throw cannot_open_file{ }; ... }
여기에서는 사용자 정의 예외 타입을 도입했다. 2장에서 클래스 정의 방법을 자세히 설명한다. 위의 예제에서 여닫는 괄호만 있으면 되는 빈 클래스를 정의했다(뒤에 세미콜론을 붙인다). 더 큰 프로젝트에서는 대개 std::exception에서 파생한(6장 참조) 예외 타입의 전체 계층 구조를 확립한다.