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

Try..catch..Throw - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оформление программы http://www.cyberforum.ru/cpp-beginners/thread330026.html
Как довести до ума программу на с++? Оформить, поменять цвет, шрифт, подписать???
C++ Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; //Вложенный класс public: class diagonal; http://www.cyberforum.ru/cpp-beginners/thread330024.html
C++ Создать класс время с данными-членами часы, минуты, секунды
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не успели пройти их... помогите пожалуйста решить Создать класс время с данными-членами часы, минуты, секунды. Перегрузить операторы сложения, вычитания(подсчет количества секунд между временем), ввода и вывода. Создать функции-члены сложения времени с заданным количеством секунд, вычитания из времени...
C++ Как послать своё сообщение другому приложению?
#define WM_MYMESSAGE 2000 void main() { HWND hWnd; hWnd = ::FindWindow(NULL,"MyApp"); ::SendMessage(hWnd,WM_MYMESSAGE,0,0); }
C++ Класс "Студент", реализовать динамический список "Группа студентов" http://www.cyberforum.ru/cpp-beginners/thread329994.html
реализовать динамический список " группа студентов". Узел: -группа -фамилия Функции списка: -добавление по алфавиту -удаление указанного -очистка списка -поиск студента -печать списка
C++ Чтение из файла, запись в файл Тут такая у меня проблема. 1) Не работает цикл в майне. Как его правильно организовать? 2) И, похоже, чтение из файла все-таки, неправильно организовано. 3) И оошшшень хотелось бы поиск в файле как-нить организовать Кто может, помогите или подскажите, пожалуйста) #include<iostream> #include<fstream> #include<iomanip> подробнее

Показать сообщение отдельно
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.07.2011, 23:57     Try..catch..Throw
просто тема не раз обсуждалась уже...

в блоке try ты хочешь проверить фрагмент в котором может возникнуть исключение.
исключение возбуждается с помощью ключевого слова throw.
в каждом из блоков catch можно перехватить по 1 типу данных.
catch(...) перехватывает любые типы. поэтому его рекомендуется ставить в конец для неожиданных ошибок.

обычно удобно выбрасывать не какие то переменные а объекты типа exception ( тут несколько вариантов: можно самому написать класс исключений, можно воспользоваться стандартным классом std::exception или другими производными от него, можно самому написать производный от него...)

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

дурацкий пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try {
int n;
std::cin >> n;
std::cin.ignore();
switch(n) {
case 0: throw 1;
case 1: throw 1.0;
default: throw 'a';
} catch(int ) {
std::cout << "int";
} catch(double d) {
std::cout << "double " << d ;
} catch(...) {
std::cout << "char";
}
пример со стандартными исключениями:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int *p;
 
while (1) {
try {
p = new int[4096];
} catch(std::bad_alloc e) {
std::cout << e.what() << '\n';
}
 
}
 
...
 
std::vector<int> vec(10,0);
try {
std::cout << vec.at(15);
} catch(std::out_of_range e) {
std::cout << e.what() << '\n';
}
свой простой класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyException {
std::string exc;
public:
MyException() { exc="unindicated exception"; }
MyException(char* st):exc(st) {}
const std::string what() { return exc; }
};
 
 
...
 
int i=10;
int j=0;
 
try {
 
if (j==0)
throw MyException("division by zero.");
else i/=j;
 
} catch(MyException& e) {
std::cout << e.what() << '\n'; 
}
 
Текущее время: 12:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru