VSCode 没有捕获抛出的异常?

时间:2021-05-01 12:53:29

标签: c++

我仍在学习 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 块。

0 个答案:

没有答案