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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dqrest
2 / 2 / 0
Регистрация: 06.01.2012
Сообщений: 114
#1

отлов ошибок try, catch зачем он нужен? - C++

31.05.2012, 12:51. Просмотров 1043. Ответов 1
Метки нет (Все метки)

я вот пишу прогу, которая не отлавливает ошибку.

C++
1
2
3
4
5
6
7
8
9
try
{
  int i=10;
  i=i/0;
}
catch(...)
{
   printf("\n error");
}
Далее, вот нашел из гугла:
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
#include <iostream>
#include <stdexcept>
 
inline int intDiv (int numerator, int denominator) {
    if (denominator == 0)
        throw std::overflow_error("Divide by zero exception");
    return numerator / denominator;
}
 
int main (void) {
    int i = 42;
 
    try {
        i = intDiv (10, 2);
    } catch (std::overflow_error e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;
 
    try {
        i = intDiv (10, 0);
    } catch (std::overflow_error e) {
        std::cout << e.what() << " -> ";
    }
    std::cout << i << std::endl;
 
    return 0;
}
Работает отлично!!!Только зачем столько напрягаться, когда нужно просто проверить через if, else???

Ладно допустим мы реализовали отлов всех типыоп вот отсюда:
C++
1
2
3
4
5
6
7
8
9
10
11
12
namespace std 
{
    class logic_error;
        class domain_error;
        class invalid_argument;
        class length_error;
        class out_of_range;
    class runtime_error;
        class range_error;
        class overflow_error;
        class underflow_error;
}
Но есть большое НООООО!!!!! Ни одна из них не ловит ошибку деления на нуль!!!!

Вопрос1-> как мне отлавливать все типы ошибок, и есть гарантия того, что все ошибки будут пойманными???

Вопрос2->как мне понять в какой части программы произошла ошибка без построения иерархии try,carth,throw???Имеется ввиду, есть ли инструментарии отлова ошибок как в java, где можно вытаскивать все из стека????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 12:51     отлов ошибок try, catch зачем он нужен?
Посмотрите здесь:
Переполнение double и отлов ошибок C++
Обработчики ошибок try catch C++
Зачем нужен конструктор? C++
C++ Зачем нужен полиморфизм
Зачем нужен extern? C++
C++ Зачем нужен malloc?
Зачем нужен inline C++
Зачем нужен static C++
Объяснить зачем нужен i C++
C++ зачем нужен параметр
C++ Зачем здесь нужен static
C++ Зачем нужен operator++(int)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 12:54     отлов ошибок try, catch зачем он нужен? #2
Цитата Сообщение от dqrest Посмотреть сообщение
все типы ошибок
C++
1
2
3
4
5
6
7
8
try
{
 
}
catch(...) //здесь ловятся все ошибки.
{
 
}

Цитата Сообщение от dqrest Посмотреть сообщение
как мне понять в какой части программы произошла ошибка
Создать свой собственный класс для обработки исключений - это может помочь в некоторых случаях.
Цитата Сообщение от dqrest Посмотреть сообщение
есть ли инструментарии отлова ошибок как в java
Нет.
Yandex
Объявления
31.05.2012, 12:54     отлов ошибок try, catch зачем он нужен?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru