Помогите разобраться с try-catch!
int main()
{
int s = 0;
try
{
int a = 6 / s;
}
catch(char* exception)
{
cout << exception << endl;
}
return 0;
}
По идее, споткнувшись на делении на ноль, программа должна, не ругаясь, перескочить на блок catch, но этого не происходит. Почему?
или напиши catch(...)
или if ( s == 0 ) throw "divide by zero"
или узнай тип исключения при делении на ноль
Вообще-то я обрабатываю открытие файла. Там проблема с try-catch такая же, просто с делением на 0 код попроще для вопроса. Мне важно принцип try-catch понять: должна ли программа при ошибке, не вылетая, перескочить на блок 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";
}
}