Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VSCode未捕获引发的异常? 我还在学习C++,我尝试用TestCcatch块实现异常处理。 #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; }_C++ - Fatal编程技术网

VSCode未捕获引发的异常? 我还在学习C++,我尝试用TestCcatch块实现异常处理。 #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; }

VSCode未捕获引发的异常? 我还在学习C++,我尝试用TestCcatch块实现异常处理。 #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; },c++,C++,我在Mac上用g++编译,我不知道为什么catch块从未被输入。@churill好吧,这是由一个从未(不太可能)真实的条件引起的:如果(x==0)?我不认为浮点Q会回答这个问题,因为零是一个精确比较可以工作的值。好吧。。。重新编辑您使用的编译器是什么?使用gcc 9.3.0,我得到了您的“错误:被零除”行。exit(错误标志)应该是std::exit(错误标志)。不一定在全局命名空间中有退出。(在我的机器上没有。) y/x = 1.33333 Abort trap: 6

我在Mac上用g++编译,我不知道为什么catch块从未被输入。

@churill好吧,这是由一个从未(不太可能)真实的条件引起的:
如果(x==0)
?我不认为浮点Q会回答这个问题,因为零是一个精确比较可以工作的值。好吧。。。重新编辑您使用的编译器是什么?使用gcc 9.3.0,我得到了您的“错误:被零除”行。
exit(错误标志)应该是
std::exit(错误标志)
不一定在全局命名空间中有
退出
。(在我的机器上没有。)
y/x = 1.33333
Abort trap: 6