解密MFC中异常处理
2014-11-28 16:03
141 查看
在MFC中异常处理机制有两种:
C++异常,在MFC3.0或者以后的版本才可用
MFC异常宏,在MFC1.0或者以后的版本可用
如果你要用MFC,编写一个新应用程序,你应该使用C++异常机制,如果你现有的应用程序已近使用了MFC异常宏,你可以继续使用MFC异常宏。当然,你也可以用C++异常代替已有的MFC异常宏。
采用C++异常代替MFC异常宏优点:
使用C++异常,编写的代码生成的模块(EXE,DLL)更小
C++异常关键字非常通用,它能处理任何异常类型(int,float,char 等等),而MFC异常宏仅能处理CException类和继承于CException的类
MFC异常宏和C++异常最大的区别是,当异常被捕获后,MFC异常宏会自动的delete掉捕获的异常,C++异常需要你手动的delete掉捕获的异常。
MFC异常宏
TRY
{
// Execute some code that might throw an exception.
AfxThrowUserException();
}
CATCH( CException, e)
{
// Handle the exception here.
if (m_bThrowExceptionAgain)
THROW_LAST();
// 没必要删除e.
}
END_CATCH
C++异常
try
{
// Execute some code that might throw an exception.
AfxThrowUserException();
}
catch( CException* e )
{
// Handle the exception here.
// "e" contains information about the exception.
if (m_bThrowExceptionAgain)
throw; // Do not delete e
else
e->Delete();//删除e,否侧引起内存泄露
}
MFC异常宏,TRY, CATCH, AND_CATCH,
END_CATCH, THROW,THROW_LAST;C++异常关键字,try,catch,throw;用C++异常代替MFC异常宏,两者之间的替换如下:
TRY (Replace it with try)
CATCH (Replace it with catch)
AND_CATCH (Replace it with catch)
END_CATCH (Delete it)
THROW (Replace it with throw)
THROW_LAST (Replace it with throw)
P.S以上内容是参考MSDN2008所写。
C++异常,在MFC3.0或者以后的版本才可用
MFC异常宏,在MFC1.0或者以后的版本可用
如果你要用MFC,编写一个新应用程序,你应该使用C++异常机制,如果你现有的应用程序已近使用了MFC异常宏,你可以继续使用MFC异常宏。当然,你也可以用C++异常代替已有的MFC异常宏。
采用C++异常代替MFC异常宏优点:
使用C++异常,编写的代码生成的模块(EXE,DLL)更小
C++异常关键字非常通用,它能处理任何异常类型(int,float,char 等等),而MFC异常宏仅能处理CException类和继承于CException的类
MFC异常宏和C++异常最大的区别是,当异常被捕获后,MFC异常宏会自动的delete掉捕获的异常,C++异常需要你手动的delete掉捕获的异常。
MFC异常宏
TRY
{
// Execute some code that might throw an exception.
AfxThrowUserException();
}
CATCH( CException, e)
{
// Handle the exception here.
if (m_bThrowExceptionAgain)
THROW_LAST();
// 没必要删除e.
}
END_CATCH
C++异常
try
{
// Execute some code that might throw an exception.
AfxThrowUserException();
}
catch( CException* e )
{
// Handle the exception here.
// "e" contains information about the exception.
if (m_bThrowExceptionAgain)
throw; // Do not delete e
else
e->Delete();//删除e,否侧引起内存泄露
}
MFC异常宏,TRY, CATCH, AND_CATCH,
END_CATCH, THROW,THROW_LAST;C++异常关键字,try,catch,throw;用C++异常代替MFC异常宏,两者之间的替换如下:
TRY (Replace it with try)
CATCH (Replace it with catch)
AND_CATCH (Replace it with catch)
END_CATCH (Delete it)
THROW (Replace it with throw)
THROW_LAST (Replace it with throw)
P.S以上内容是参考MSDN2008所写。
相关文章推荐
- 【异常处理】MFC程序崩溃的友好处理
- MFC异常处理和诊断
- Laravel之加密解密/日志/异常处理及自定义错误
- 使用 MFC 套接字在静态链接 MFC VisualC++6.0 应用程序, 辅助线程中发生处理异常。
- MFC 0xC000041D 回调期间遇到未处理的异常
- VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
- MFC异常处理之TRACE, ASSERT, VERIFY使用方法
- 【VS2010学习笔记】【异常处理】二(VS2008/VS2010中MFC“资源被另一个编辑器打开”)
- 微信加解密的异常处理办法
- MFC异常处理和诊断
- win32/mfc 异常处理与总结
- mfc连接ACCESS2010及以上版本,部分“MicrosoftC++异常”处理
- (转载)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
- MFC异常处理的问题
- MFC异常处理机制,获取异常引起的错误
- mfc异常崩溃处理
- VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
- MFC之解决关闭异常的处理
- MFC中关于m_pMainWnd = &dlg;处报错的解决方案,针对XX处未处理的异常:0xC0000005:写入位置0x00000020时发生访问冲突
- 异常处理方法