Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с try-catch!

321
07 октября 2002 года
Doomych
124 / / 20.01.2000
#include <iostream.h>
int main()
{
int s = 0;
try
{
int a = 6 / s;
}
catch(char* exception)
{
cout << exception << endl;
}
return 0;
}

По идее, споткнувшись на делении на ноль, программа должна, не ругаясь, перескочить на блок catch, но этого не происходит. Почему?
1.3K
07 октября 2002 года
Undefined
5 / / 20.05.2000
потому что параметр catch - тип перехватываемого исключения
или напиши catch(...)
или if ( s == 0 ) throw "divide by zero"
или узнай тип исключения при делении на ноль
321
07 октября 2002 года
Doomych
124 / / 20.01.2000
Что значит "напиши catch(...)"? Я же так и написал.
Вообще-то я обрабатываю открытие файла. Там проблема с try-catch такая же, просто с делением на 0 код попроще для вопроса. Мне важно принцип try-catch понять: должна ли программа при ошибке, не вылетая, перескочить на блок catch или нет, а если должна, то почему у меня этого не происходит?

И еще вопрос: можно ли определить, есть ли файл с таким-то адресом без попытки его открытия?
374
07 октября 2002 года
Pennywise
158 / / 20.05.2000
Попробуй посмотреть тут:
http://infocity.com.ua/prog/c/content/c027.phtml?id=1318
540
07 октября 2002 года
AL C++ Programmer
36 / / 20.01.2000
Инструкция throw A; Генерирует исключение типа A, catch(A) перехватывает его. Причем обработчиков catch может быть несколько. Пример:
struct DivByZero {};

float f(int a) {
try {
if(a==0) throw DivByZero;
return (1/a);
}
catch(DivByZero)
cerr << "Division by zero!\n";
}
catch(...) /* перехватывает все исключения, не обработанные в предыдущих обработчиках. */
cerr << "Unknown error.\n";
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог