xml*_*lmx 4 c c++ compiler-construction exception-handling visual-c++
根据MSDN:
__leave语句更有效,因为它不会导致堆栈展开.
据我所知,就是说:"这样一个通用的代码片段是危险的!"
struct A
{
int* p;
A() : p(new int) {}
~A() { delete p; }
};
void f()
{
__try
{
A a;
... // Doing somthing
if (the thing has gone bad) __leave;
... // Continue
}
__finally
{}
}
Run Code Online (Sandbox Code Playgroud)
在C++项目中完全避免__leave是最佳做法吗?
http://msdn.microsoft.com/en-us/library/yb3kz605.aspx
说:
对于C++程序,应使用C++异常处理而不是结构化异常处理.有关更多信息,请参阅C++语言参考中的异常处理.
编辑:此外,通常不要使用编译器特定的功能.