我仍在学习 C++,我正在尝试使用 try-catch 块实现异常处理。
#include<iostream>
#include<cstdlib> //for exit
const int divide_flag(-1);
double divide(double x, double y){
if(x==0) throw divide_flag;
return y/x;
}
int main()
{
double x{3.},y{4.};
double result;
try{
result=divide(x,y);
std::cout<<"y/x = "<<result<<std::endl;
x=0;
result=divide(x,y);
std::cout<<"y/x = "<<result<<std::endl;
}
catch(int error_flag) {
if(error_flag == divide_flag) {
std::cerr<<"Error: divide by zero"<<std::endl;
exit(error_flag);
}
}
return 0;
}
代码编译得很好,但是当我运行它时,程序在抛出异常后中止并且不进入 catch 块。我得到的唯一输出是
y/x = 1.33333
Abort trap: 6
我正在 Mac 上使用 g++ 进行编译,但我不确定为什么从未输入 catch 块。