C++ 异常处理

// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
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 <iostream>
#include <windows.h>
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
}

  

posted @ 2015-10-31 22:51  QQ76211822  阅读(163)  评论(0编辑  收藏  举报