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;
}

浙公網安備 33010602011771號