C++ try catch 捕获空指针异常,数组越界异常
#include <exception> #include <iostream> using namespace std; /********************************** //project -> Properties -> C/C++ -> Code Generation --> Enable C++ Exceptions //选择 Yes with SEH Exceptions (/EHa) 这样的话C++的try catch 也可以捕获到空指针,内存越界,0除异常 //默认是选择Yes (/EHsc) **********************************/ void TestIntType() { try { throw 1; } catch(...) { cout<< "在 try block 中, 准备抛出一个异常." << endl; } } void TestDoubleType() { try { throw 0.5; } catch(...) { cout<< "在 try block 中, 准备抛出一个异常." << endl; } } void TestEmptyPointType() { try { int* p = NULL; *p = 3; } catch(...) { cout<< "非法地址操作异常" << endl; } } void TestDivZeroType() { try { int b = 0; int a = 3/b; } catch(...) { cout<< "0除异常" << endl; } } void TestMemoryOutType() { int * a = new int[4]; try { for (int i = 0; i<245; i++) { a++; } *a = 3; } catch(...) { cout<< "内存越界异常" << endl; } } int main(int argc, char* argv[]) { TestEmptyPointType(); //TestDivZeroType(); TestMemoryOutType(); return 1; }