Это базовый класс для всех исключений, генерируемых стандартной библиотекой и определенными выражениями языка. Вы можете создавать свои собственные классы исключений, использовать другую иерархию или создавать неклассные данные (например, фундаментальные типы).
virtual const char* what() const throw()
{
}
это функция, которая будет возвращать постоянный указатель на изменяемый символ. В остальном я не уверен. Кто-нибудь может помочь?