На этом шаге мы приведем классификацию стандартных исключений.
Стандартная библиотека C++ неоднородна. Она содержит программный код из множества разных источников, отличающихся по стилю проектирования и реализации. Типичным примером таких различий является обработка ошибок и исключений. Одни части библиотеки - например, строковые классы - поддерживают подробную обработку ошибок. Они проверяют все возможные проблемы, которые могут возникнуть в работе программы, и генерируют исключение в случае ошибки. Другие компоненты - например, стандартная библиотека шаблонов STL и массивы valarray - оптимизируются по скорости, поэтому они редко проверяют логические ошибки и выдают исключения только в случае ошибок времени выполнения.
Все исключения, генерируемые языком или библиотекой, происходят от общего предка - базового класса exception. Этот класс является корнем иерархического дерева исключений, изображенного на рис. 1.
Рис.1. Иерархия стандартных исключений
Стандартные классы исключений делятся на три категории:
На следующем шаге мы рассмотрим исключения языковой поддержки.