Шаг 52.
Библиотека STL.
Обработка ошибок и исключений. Генерирование стандартных исключений

    На этом шаге мы рассмотрим способы генерации стандартных исключений.

    Стандартные исключения также могут генерироваться в пользовательских библиотеках или программах. Объекты всех классов стандартных исключений, предоставляющих такую возможность, создаются с одним параметром: объектом string с описанием, которое должно возвращаться функцией what(). Например, определение класса logic_error выглядит так:

namespace std {
  class logic_error : public exception { 
    public: 
      explicit logic error (const strings whatString);
  };
}

    Набор стандартных исключений, которые могут генерироваться в пользовательских библиотеках или программах, включает класс logic_error с производными классами, класс runtime_error с производными классами, а также класс ios_base::failure. Следовательно, вы не сможете генерировать исключения базового класса exception, а также любых классов исключений, предоставляющих языковую поддержку.

    Чтобы генерировать стандартное исключение, просто создайте строку с описанием и передайте ее объекту исключения в команде throw:

  std::string s;
  .    .    .    .
  throw std::out_of_range(s);

    Автоматическое преобразование char* в string позволяет использовать строковый литерал:

  throw std::out_of_range("out_of_range (somewhere.somehow)");

    На следующем шаге мы рассмотрим классы исключений, производные от exception.




Предыдущий шаг Содержание Следующий шаг