这个宏展开的代码如下
#define AND_CATCH(class, e) } catch (class* e) { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); _afxExceptionLink.m_pException = e;区别如下:
Defines a block of code for catching additional exception types thrown in a preceding TRY block. Use the CATCH macro to catch one exception type, then the AND_CATCH macro to catch each subsequent type. End the TRY block with an END_CATCH macro.
#define AND_CATCH(class, e) } catch (class* e) { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); _afxExceptionLink.m_pException = e;区别如下:
Defines a block of code for catching additional exception types thrown in a preceding TRY block. Use the CATCH macro to catch one exception type, then the AND_CATCH macro to catch each subsequent type. End the TRY block with an END_CATCH macro.
解决方案 »
- 关于CDialog类调用CView类的问题
- 删除CTreeControl某个节点调用什么函数?
- 求教:组合框结合单选按钮的用法
- 在使用编译预处理语句的情况下让两个.h文件相互包含的错误
- EQ二次开发问题
- 第三方提供的一个*.obj,不知用的什么技术。大家发表一下看法
- 求助 怎样让软件运行时加载软件目录下的ws2_32.dll
- 自绘控件,怎么样取得鼠标点击事件。求求高手们帮帮忙
- 我写的在局域网里的像Oicq的一个网上寻呼软件,分客房端和服务器端,不知大家有没有兴趣!
- sdk. 如何察看某个目录下某文件是否存在?
- 寻找不用IE的WebBrowser,显示Html格式文件的东东
- 如何在自己的程序里关掉已经启动又需要密码的屏保!
加个例子CObject* pObj = NULL;
CFileException ex;
TRY
{
if (!sourceFile.Open(argv[1],
CFile::modeRead | CFile::shareDenyWrite, &ex))
{
TRACE("Error:%s%d\n",__FILE__,__LINE__);
}
pObj = new CObject;
}
CATCH(CFileException,e)
{
return FALSE;
}
AND_CATCH(CMemoryException,e)
{
AfxMessageBox(AFX_IDP_FAILED_MEMORY_ALLOC);
return FALSE;
}
END_CATCH
TRY
{
}
CATCH()
{
}
CATCH()
{
}
END_CATCH
也一样正常运行。既然如此,为什么还要用AND_CATCH?
还望说得详细一些,过后50分一定奉上。