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

try, catch, throw - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Файл: Поиск по текстовому файлу http://www.cyberforum.ru/cpp-beginners/thread722447.html
как сделать чтобы мы вводим текст а пограмка ищет совпадения с словами которые есть в текстовику? Добавлено через 18 секунд надеюсь вы миня поняли))
C++ Записать 3 варианта программы вычисления условной функции Записать 3 варианта (с циклами while, do, for) программы вычисления условной функции в точках хi ε , хi = х0 + iΔх, i = 0,1,… Вывод резуль-татов обеспечить в виде таблиц с указанием номера ветви, для которой он получен. http://www.cyberforum.ru/cpp-beginners/thread722443.html
C++ нужно убрать курсор
это ↓ не помогает убрать курсор, а в моей ситуации он никак не вписывается. помогите CONSOLE_CURSOR_INFO cci; cci.bVisible = 0; cci.dwSize = 100; SetConsoleCursorInfo(h, &cci); вот текущий код : /*Реализовать класс Graphic, который позволяет рисовать на экране консоли различные геометрические фигуры.
C++ Сгенерировать и вывести на экран массив из целого числа n случайных чисел
Сгенерировать и вывести на экран массив из целого числа n случайных чисел от -120 до 120. Создать новый массив из элементов от -50 до 50. На украинском. Згенерувати і вивести на екран масив з цілого числа n випадкових чисел від -120 до 120. Створити новий масив з елементів від -50 до 50. Буду очень благодарен за программу.
C++ Односвязный список http://www.cyberforum.ru/cpp-beginners/thread722433.html
Пришло время понять и разобраться со списками. Кто-то может посоветовать нормальные статьи в интернете? Сам уже искал, в большинстве статьи которые находил привязаны к особенностям в некоторых примерам, но не дают общей картины. Добавлено через 22 минуты struct Item { int liczba; struct Item* next; }; void slstore(struct Item *i,
C++ Дерево удаление узла Здравствуйте, реализовываю двоичное дерево, разобралась с добалением, обходами, и поиском, а удалить узел не понимаю как, помогите пожалуйста реализовать функцию удаления #include "stdafx.h" #include "iostream" #include<conio.h> #include <stdio.h> #include <time.h> #include <stack> using namespace std; подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
07.12.2012, 04:38     try, catch, throw
Смотря какая ошибка.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <stdexcept>
 
int divide( int a, int b ) {
   if ( a == 0 )
      throw std::runtime_error( "Exception occurred: Division by zero." );
 
   return a / b;
}
 
int main() {
   int result;
 
   try {
      result = divide( 10, 2 );
 
      std::cout << result << std::endl;
   } catch ( std::runtime_error &error ) {
      std::cout << error.what() << std::endl;
   }
 
   try {
      result = divide( 10, 0 );
 
      std::cout << result << std::endl;
   } catch ( std::runtime_error &error ) {
      std::cout << error.what() << std::endl;
   }
 
   return 0;
}
Можно так же кидать исключения прям в try блоке. В catch обрабатывается тип исключения ( в общем случае - это объект класса ), который указывается в скобках. Для обработки всех возможных исключений используется многоточие
C++
1
catch ( ... )
Но в данном случае нельзя получить доступ к объекту класса исключения. Если catch блоков несколько, то выбирается первых подходящий. То есть если выбрасывается объект какого то производного класса ( например тот же std::runtime_error, который является производным от std::exception ), а первый в обработчиках идет объект базового класса ( например std::exception ), то будет выбран именно он.
пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <exception>
#include <stdexcept>
 
int div( int a, int b ) {
   if ( b == 0 )
      throw std::runtime_error( "Exception occurred: Division by zero." );
 
   return a / b;
}
 
int main() {
   int result;
 
   try {
      result = div( 10, 0 );
 
      std::cout << result << std::endl;
   } catch ( std::exception &error ) {
      std::cout << "std::exception: " << error.what() << std::endl;
   } catch ( std::runtime_error &error ) {
      std::cout << "std::runtime_error: " << error.what() << std::endl;
   }
 
   return 0;
}
Если подходящего обработчика не обнаружено, то исключение пробрасывается дальше вниз по стеку, пока необходимый обработчик не будет найден, или не будет достигнуто начало стека, в это случае приложение аварийно завершится. В принципе, можно бросать любые типы в качестве исключения, например, тот же int или double. И обрабатывать их соответствующими обработчиками ( catch ( int err ), catch ( double err ) ), но сомневаюсь, что это хорошая идея.
 
Текущее время: 00:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru