Программирование | Отладка | Web-технологии | Microsoft Office | Теор.информатика | Исслед-е операций | Операц. сис-мы | Новости |
Проектирование ИС | Исск. инт-т | Трансляторы | Об авторах | Карта сайта | Поиск |
Язык программирования Turbo Pascal |
Среда программирования Delphi 6 |
Язык программирования C++ |
Язык программирования C# |
Язык программирования Assembler |
Язык программирования Go |
Язык программирования Haskell |
Язык программирования Java |
Язык программирования Kotlin |
Язык программирования LISP |
Язык программирования Prolog |
Язык программирования Python |
Параллельные алгоритмы |
Сети Петри |
Начала |
Отладчик Turbo Debugger |
Основы HTML |
Технология Flash |
Язык программирования Perl |
Основы языка PHP |
Основы PhotoShop |
Основы JavaScript |
Основы CSS |
Основы CorelDRAW |
Библиотека jQuery |
Текстовый процессор Microsoft Word |
Электронные таблицы Microsoft Excel |
Система управления базами данных Microsoft Access |
Использование VBA в Microsoft Excel |
Место информатики в системе наук |
Общие сведения об информации |
Кодирование информации в теории Шеннона |
Основные понятия теории алгоритмов |
Классические формализации понятия 'алгоритм' |
Понятие рекурсии |
Сложность алгоритма |
Методы разработки алгоритмов |
Сложность задачи |
Информационное моделирование |
Основные понятия теории графов |
Алгоритмы поиска на графах |
Матроиды. 'Жадные' алгоритмы |
Динамическое программирование |
Алгоритмы |
UNIX и Linux |
Унифицированный язык моделирования UML |
Введение в машинное обучение с использованием Python |
Основы создания нейросети на Python |
Глубокое обучение на Python |
Начала |
Динамические структуры данных |
Библиотека RX |
Основные классы и события Delphi |
Основные компоненты Delphi |
Организация потоков |
Технология COM |
Язык программирования Object Pascal |
Локальные БД в Delphi |
Библиотека OWL |
Библиотека Qt |
Библиотека STL |
Библиотека шаблонов классов Borland |
Основы компьютерной графики |
Динамические структуры данных |
Начала |
Обработка исключительных ситуаций |
Оптимизация с помощью ассемблера |
Основы объектно-ориентированного программирования |
Потоки ввода-вывода |
Разное |
Редактор Resource Workshop |
Среда Visual C++ |
Программирование в Microsoft Visual C++ 2010 |
Технология CUDA |
Технология OLE |
Начала |
16-битное программирование |
32-битное программирование |
Основы логического программирования |
Динамические структуры данных |
Visual Prolog |
Библиотека PyQt5 |
Библиотека Tkinter |
Визуализация данных |
Начала |
Задачи ComputerScience |
Рекурсия |
Однострочники |
Вкладка RXControls |
Вкладка RXDBAware |
Вкладка RXTools |
Вкладка Standard |
Вкладка Additional |
Создание Internet-приложений |
Вкладка System |
Вкладка Win32 |
Вкладка Servers |
Технология ADO |
Вкладка QReport |
Вкладка InterBase |
Вкладка Dialogs |
Начала |
Среда программирования. Язык С/С++ |
На этом шаге мы рассмотрим члены классов исключений.
Обработка исключений в секциях catch обычно производится через интерфейс исключений. Интерфейс всех стандартных классов исключений состоит из единственной функции what(). Функция возвращает дополнительную информацию (помимо типа исключения) в виде строки, завершенной нулевым байтом:
namespace std { class exception { public: virtual const char* what() const throw(); . . . . . }; }
Содержимое строки определяется реализацией. В частности, это может быть строка с многобайтовой кодировкой, завершенная нулем, интерпретируемая как wstring. Строка, возвращаемая функцией what(), продолжает существовать вплоть до уничтожения объекта исключения, от которого она была получена.
Остальные члены стандартных классов исключений предназначены для создания, копирования, присваивания и уничтожения объектов исключений. Стандартные классы не имеют членов, содержащих дополнительную информацию об исключении (помимо функции what()). Например, не существует переносимых средств для получения информации о контексте исключения или неверного индекса при ошибке выхода из интервала. Переносимые возможности обработки дополнительной информации фактически ограничиваются выводом сообщения, полученного от what():
try { . . . . } catch (const std::exception& error) { // Вывод сообщения об ошибке, определяемого реализацией std::cerr << error.what() << std::endl; . . . . }
Единственным источником информации об исключении, помимо функции what(), является конкретный тип исключения. Например, при обработке исключения bad_alloc программа может попытаться выделить дополнительную память.
На следующем шаге мы рассмотрим генерирование стандартных исключений.