开始的代码在一个Win32 Console的空工程里建立的,在一个构造函数里写了大致如下的语句:
myclass()
{
try{
Blocks = new T[size];
}
catch (CException e)
{
AfxMessageBox("Can't allocate memory now!");
Blocks = NULL;
return;
}
}size大约为6M左右
现在在一个MFC对话框程序里引用这个类,可是new失败的时候直接就出个框,然后程序退出,而不是出我自己的提示
为什么?
myclass()
{
try{
Blocks = new T[size];
}
catch (CException e)
{
AfxMessageBox("Can't allocate memory now!");
Blocks = NULL;
return;
}
}size大约为6M左右
现在在一个MFC对话框程序里引用这个类,可是new失败的时候直接就出个框,然后程序退出,而不是出我自己的提示
为什么?
如果你不清楚自己想捕获的异常是什么类型,你可以用catch(...)捕获所有异常。
myclass()
{
try
{
Blocks = new T[size];
}
catch(...)
{
AfxMessageBox("Can't allocate memory now!");
Blocks = NULL;
return;
}
}
try
{
pTest = new BYTE[100*1024*1024]; //100MB
}
catch(CMemoryException *e)
{
TCHAR szCause[256];
e->GetErrorMessage(szCause,sizeof(szCause));
AfxMessageBox(szCause);
e->Delete();
}
if(pTest)
delete pTest;
try
{
}
catch(...)
{
}
不过据我所知,VC6.0的new运算符失败并不抛出异常,而是返回null,更高版本的才抛出异常。
如果你的能捕捉异常的话,试试TRY-CATCH(,)-END_CATCH宏。
{
}
__except(1)
{}