我一直在使用c ++,而且我熟悉正常的try / catch。但是,我现在发现自己在Windows上,在VisualStudio中进行COM开发编码。代码的几个部分使用如下内容:
TRY {
... do stuff
} CATCH_ALL(e) {
... issue a warning
}
END_CATCH_ALL;
这些宏有什么意义?它们对内置的try / catch有什么好处?
我试过谷歌搜索,但“尝试与TRY”很难搜索。
答案 0 :(得分:7)
这是一个MFC宏:
http://msdn.microsoft.com/en-us/library/t8dwzac0%28VS.71%29.aspx
This page说它们是MFC 1.0中的残余 - 在新代码中使用普通的C ++异常:
低于3.0的MFC版本不支持C ++异常机制。 MFC提供了处理异常的宏。
答案 1 :(得分:3)
您需要记住,使用Visual C ++编程时有3种不同的异常:
SEH和C ++异常机制不应该混合。
MSDN上的这篇文章有更多细节:
答案 2 :(得分:1)
这是Windows编程的工件,在编译器没有很好地支持try / catch之前,或根本不受支持。
答案 3 :(得分:0)
这些宏对于早期版本的编译器非常重要。它们仍然支持与遗留代码的兼容性,但不建议使用它们。
Exception Handling in Visual C++的文档说明了MFC异常:
从版本3.0开始,MFC使用了C ++异常,但仍然支持它 较旧的异常处理宏,类似于C ++异常 通知。虽然不建议将这些宏用于新的 编程时,它们仍然支持向后兼容性。在 已经使用宏的程序,可以自由使用C ++ 也有例外。在预处理期间,宏评估为 Visual C ++实现中定义的异常处理关键字 从Visual C ++版本2.0开始的C ++语言。你可以走了 在开始使用C ++时,现有的异常宏就位了 异常。