a simple example:
class CTest1;
class CTest2;
class CTest3;
void BadCode()
{
//define
CTest1 * pTest1 = NULL;
CTest2 * pTest2 = NULL;
CTest3 * pTest3 = NULL;
//使用try, catch, throw
try
{
//new test1
pTest1 = new CTest1;
//do something
bool bRet = DoSomething();
if (!bRet)
throw -1;
//new CTest2
pTest2 = new CTest2;
//do something
bRet = DoSomething();
if (!bRet)
throw -2;
//new CTest3
pTest3 = new CTest3;
bRet = DoSomething();
//do something
if (!bRet)
throw -3;
//release
delete pTest1;
pTest1 = NULL;
delete pTest2;
pTest2 = NULL;
delete pTest3;
pTest3 = NULL;
}
catch(...)
{
if (pTest1)
delete pTest1;
if (pTest2)
delete pTest2;
if (pTest3)
delete pTest3;
}
}