Форум программистов, компьютерный форум CyberForum.ru

если ли стандартное исключение чтоб перехватывало - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ без знаковый double. Если ли чтоб можно было в шаблон пихать или самому сделать придется ? http://www.cyberforum.ru/cpp-beginners/thread645199.html
сабжж
C++ Как можно переопределить <обобщенный аргумент> в обобщенном классе допустим есть что то простое // // #ifndef Print_HPP #define Print_HPP http://www.cyberforum.ru/cpp-beginners/thread645181.html
C++ Что означают данные
Здравствуйте. подскажите что могут означать данные следующего характера? DWORD poffsets::dw_m_lifestats() {...
C++ Метрики Холстеда
Добрый вечер! В качестве индивидуального задания студент произвольно выбирает программу, ко-торую он разработал и отладил (необходимо представить распечатанный листинг) при изучении предыдущих дисциплин цикла «Программное обеспечение» («Программирова-ние», «Системное программирование» и др.). Требуется для представленного программно-го модуля с использованием соотношений определить значения...
C++ Зачем нужен спецификатор private? http://www.cyberforum.ru/cpp-beginners/thread645110.html
Зачем нужен спецификатор private?Если по умолчанию все члены класса являются частными? Class queue { int q; int sloc, rloc; public: void init (); void qput(int i); int qget(); private: ...
C++ Быстрая сортировка Друзья, здравствуйте! Как работает быстрая сортировка - у меня практически вопросов нет: #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; const int n=10; template <class T> void QuickSort (T Ar, long N) { подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.09.2012, 03:14     если ли стандартное исключение чтоб перехватывало
вопрос двусмысленный.
все, что генерируется библиотекой STL - это исключения, которые унаследованы от стандартного std::exception.

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

Например при попытке вставить объект в вектор и в случае нехватки памяти вылетит стандартное std::bad_alloc. Но если память выделилась, дальше зовется конструктор копирования вставляемого объекта. Ну и из этого конструктора может вылететь что-угодно. Поэтому, если написать такой код:

C++
1
2
3
4
5
6
7
8
try
{
  vector<Foo> v;
  v.push_back(Foo());
}
catch (std::exception&)
{
}
То это не перехватит всех возможных исключений, которые могут возникнуть в данном коде.


Резюме: Какого-то базового исключения для всех типов исключений не существует.
Можно только ставить catch(...), но тут тип исключения неизвестен.
Надо сказать, есть хитрый трюк для идентификации типа исключения в рантайме, и его можно применить для преобразования одного типа исключения в другое. Но код преобразования нужно писать самостоятельно для каждого типа исключения.
 
Текущее время: 12:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru