这篇文章的内容摘自《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类型的对象,也可以是某个模板类对象。