void SomeFuncO
{
try
{
// код, обеспечивающий устойчивость к исключениям
}
catch (const std::exceptions exp) // обработать bad_alloc, // bad_cast и т.д.
{
cout « "Exception encountered: " « exp.what() << endl;
}
Ваш собственный класс исключения, производный от класса std: exception
Вы можете передать исключение любого типа, какой пожелаете. Однако в наследова
нии от класса s t d : : e x c e p t io n есть преимущество — все существующие обработчики
для исключений c a tc h ( c o n s t s t d : : e x c e p t i o n s ) , для исключений b a d _ a llo c , b a d _
c a s t и т.п. также работают и автоматически масштабируются до обработчика вашего но вого класса исключения, поскольку они имеют тот же базовый класс (листинг 28.5).
И С Т И Н Г 2 8 .5 . Класс CustomException, происходящий от класса std: exception_________
#include
#include
#include
using namespace std;
4:
5: class CustomException: public std::exception
6 : {
string Reason;
public:
// конструктор, необходимый Reason
Do'stlaringiz bilan baham: |