[cpp] view plain copy
- #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;
- }