• 异常变量的生命周期
  • //抛出的是 throw MyException(); catch (MyException e) 调用拷贝构造函数 效率低
  • //抛出的是 throw MyException(); catch (MyException &e) 只调用默认构造函数 效率高 推荐
  • //抛出的是 throw &MyException(); catch (MyException *e) 对象会提前释放掉,不能在,非法操作
  • //抛出的是 new MyException(); catch (MyException *e) 只调用默认构造函数 自己要管理释放
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class MyException
{
public:
	MyException()
	{
		cout << "MyException默认构造函数调用" << endl;
	}

	MyException(const MyException & e)
	{
		cout << "MyException拷贝构造函数调用" << endl;
	}

	~MyException()
	{
		cout << "MyException析构函数调用" << endl;
	}

};

void doWork()
{
	throw  new MyException();
}

void test01()
{
	try
	{
		doWork();
	}
	//抛出的是 throw MyException();  catch (MyException e) 调用拷贝构造函数 效率低
	//抛出的是 throw MyException();  catch (MyException &e)  只调用默认构造函数 效率高 推荐
	//抛出的是 throw &MyException(); catch (MyException *e) 对象会提前释放掉,不能在非法操作
	//抛出的是 new MyException();   catch (MyException *e) 只调用默认构造函数 自己要管理释放
	catch (MyException *e)
	{
		cout << "自定义异常捕获" << endl;
		delete e;
	}

}

int main(){
	test01();


	system("pause");
	return EXIT_SUCCESS;
}