// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include using namespace std;BOOL bTest = false;void Get(){ char *p = NULL;//2 __try{ if (!bTest){ bTest = true; strcpy(p, "123");//3 //下面不被执行 //... } else{ p = new char[100]; strcpy(p, "123"); } } __finally{//在处理 if (p){//5,delete不执行 delete[]p; } }}void Test(){ int i = 0; while (i++ < 2){ __try{ Get();//1 } __except (EXCEPTION_EXECUTE_HANDLER){//4 printf("异常出现,但是不作处理\n");//6 } }}int _tmain(int argc, _TCHAR* argv[]){ Test(); return 0;}
第一次循环如上。
第二次循环如下:
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include using namespace std;BOOL bTest = false;void Get(){ char *p = NULL;//2 __try{ if (!bTest){ bTest = true; strcpy(p, "123"); } else{ p = new char[100]; strcpy(p, "123");//3 } } __finally{ if (p){ delete[]p;//4 } }}void Test(){ int i = 0; while (i++ < 2){ __try{ Get();//1 } __except (EXCEPTION_EXECUTE_HANDLER){ printf("异常出现,但是不作处理\n"); } }}int _tmain(int argc, _TCHAR* argv[]){ Test(); return 0;//5}