C++ предоставляет нам стандартный класс обработки исключений , который используется для генерации исключений при выполнении функций стандартной библиотеки C++. Иерархическая структура стандартных классов исключений, предоставляемых C++, выглядит следующим образом:
Видно, что все классы исключений наследуются от базового класса исключений Logic_error и runtime_error в классе исключений — это две относительно большие категории, включающие несколько собственных классов. Они разделены на таблицы для представления логических ошибок и ошибок времени выполнения .
Приведите примеры, например:
1. Когда мы используем new для освобождения памяти, если места недостаточно, будет выдано исключение bad_alloc .
2. Когда мы используем Dynamic_cast() для выполнения динамического преобразования типов и терпим неудачу, будет выдано исключение bad_typeid .
3. Когда вычисленное значение превышает максимальный диапазон, представленный типом, выдается исключение overflow_error , указывающее на переполнение операции. Аналогичным образом, underflow_error указывает на переполнение операции.
4. Когда мы используем индекс класса string, но он выходит за пределы, генерируется исключение out_of_range .
Подождите... подождите... пожалуйста, узнайте больше сами.
Следует отметить, что при использовании стандартного класса исключений, поставляемого с C++, вам необходимо включить соответствующий заголовочный файл, поскольку классыException и bad_Exceptionion определены в исключении заголовочного файла, а класс bad_alloc определен в новом заголовочном файле, класс bad_typeid определен в файле заголовка typeinfo. Класс ios_base::failure определен в файле заголовка ios, а другие классы исключений определены в stdException.
Ниже я покажу вам, как использовать стандартный класс исключений C++ :
#include<iostream>#include<new>#include<stdException>usingnamespacestd;//Обработка исключений intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<Exceptionoccurred:<<t.what()<<endl;}catch(out_of_range&t){cout<<Exceptionoccurred:<<t.what()<<endl;} возврат0;}
Результаты бега следующие:
Пожалуйста, попробуйте его самостоятельно и научитесь им пользоваться!