Categories
不学无术

C++异常处理,stack unwinding

这篇文章的内容摘自《C++标准程序库》2.2.3节
C++标准程序库可以在不污染函数接口的情况下处理异常。如果你遇到一个意外情况,可以跑出异常来停止后续流程,例如:

class Error;
void f()
{
    ...
    if(exception-condition)
        throw Error();
    }
    ...
}

其中throw开始了stack unwinding过程,也就是说,他将使得退离任何函数区段时的行为像以return语句返回一样,然而程序却不会跳转到任何地点。对于所有被声明与某区段——而该区段却因程序异常而退离——的局部对象而言,会调用它的析构函数stack unwinding的动作会持续到退出main()或被某个catch子句捕捉并处理了异常为止。
异常对象(exception objects)其实就是一般类或基本类的对象,可以是int,string类型的对象,也可以是某个模板类对象。
 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.