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;

}


你可能感兴趣的:(catch)