让C++的try/catch捕捉除0错误,GCC的编译选项是什么?
VC的编译选项可以让C++的try/catch捕捉除0错误,GCC的编译选项是什么?
C++遇到除0错误的时候,默认不能用try/catch来捕捉。
Windows上面VC可以通过指定/EHa编译选项来让try/catch来捕捉除0错误。
Linux上面GCC默认不能捕捉到,而是操作系统检测到硬件错误,程序崩溃。
我的问题是:GCC可否也有编译选项,可以让标准C++的异常处理来捕捉除0错误?
- C/C++ code
#include<iostream>#include <excpt.h>using namespace std;void fail() { //Only When /EHa is enabled, could C++ catch divide 0 exception try{ int i=0, j=1; j /= i; // This will throw a SE (divide by zero). } catch(...){ cout<<"Divide by 0."<<endl; }}void main(){ __try { fail(); }// __except will only catch an exception here __except(EXCEPTION_EXECUTE_HANDLER) { // if the exception was not caught by the catch(...) inside fail() cout << "An exception was caught in __except." << endl; }}
[解决办法]
-mcheck-zero-division
是不是这个?
[解决办法]
没有
用 signal