我对浮点异常有疑问。当我被零除时,我得到这个异常。我试图抓住它,但是互联网上的解决方案对我不起作用。
#include<iostream>
using namespace std;
int main(){
double h{0};
int a{0},b{0},c{0};
cin.exceptions(ios_base::failbit);
cout << "Enter Values: ";
try{
cin >> a >> b >> c;
h = (3/1/a+1/b+1/c);
if(a == 0 || b == 0 || c == 0){
throw overflow_error("Division by zero is not allowed!");
}
cout << h;
}
catch(overflow_error e){
cerr << e.what();
}
catch(exception& e){
cerr << "Only numbers!";
}
catch(...){
cerr << "?";
}
return 0;
}
答案 0 :(得分:1)
您将收到一个“浮点异常”(这不是C ++异常),这就是为什么它不可捕获的原因。
https://www.quora.com/Why-isn%E2%80%99t-this-catch-block-in-C++-catching-any-exception
我建议guarding进行输入验证。
在您的代码中,异常发生在您开始扔东西之前。