格式:
try
{
}
catch(...) //表示任何异常
{
}
CException是Microsoft基本类库中处理各种异常的基础库。
CException是一个抽象基类,不可构造一个CException对象.
其派生库及描述如下:
CMemoryException
内存不够CNotSupportedException请求不支持的操作CArchiveException文档指定异常CFileException文件指定异常CResourceExceptionWindows资源未找到或不可创建COleExceptionOLE异常CDBException数据库异常(即基于开放数据库连接的MFC数据库类出现异常)COleDispatchExceptionOLE发送(自动)异常CUserException资源无法找到CDaoException数据访问对象异常(即DAO类出现异常)CInternetExceptionInternet异常(即Internet类出现异常)1.可以在try{}中手动抛出异常throw/
2.可以使用多个catch来捕捉异常。
3.可以调用GetErrorMessage或ReportError来向用户报告异常的详细情况。
4.如果Catch关键字得到异常,则不会自动删除。需调用delete函数。
CException
构造一个CException对象Delete删除一个CException对象GetErrorMessage获取异常描述信息ReportError在消息框中向用户报告一个错误信息
try
{
}
catch(CException *e) //
{
e->ReportError();
e->delete();
}
使用的场景有:原则是容易抛出异常地方,如
1.内存操作的,分配、释放、移动
2.序列化读写文件CArchive
3.使用第三方接口读写excel文件。
bad_alloc 是operator new不能满足内存分配请求时抛出的异常类型。
如
try
{
}
catch(bad_alloc &e) //
{
}
try
{
}
catch(std::bad_alloc &) //
{
}