标签:set 异常 嵌套使用 一般来说 try let 默认 拷贝构造函数 抛出异常
try块可以嵌套使用,当try内部模块中为捕获到异常时,传播到外部捕获。当内层已经捕获异常时,将不再传播到外层。当需要传播到外层时,需要内部捕获该异常后,重新再抛出异常,就可以传播到外面。注意重新抛出异常的时候会调用拷贝构造函数。
当异常均未被捕获时,将调用terminate函数,terminate函数默认调用系统的abort()函数终止进程。可以用set_terminate函数设置terminate调用的函数。
栈展开的定义是,沿着嵌套调用链接向上查找,直至为异常找到一个catch子句。这个过程称之为栈展开。在栈展开的过程中,会为生产的局部对象调用析构函数。
构造函数中可以抛出异常,抛出异常时应消除已构造的对象(如已构造一个obj = new Obj,就要保证delete掉这个new出来的对象)。由于构造未完成,所以不会调用析构函数。
注意:抛出异常的时候,就会调用析构函数,而不是捕获异常的时候,在main中抛出异常后,在这个异常未被捕获之前,在调用析构函数又抛出异常,此时就会调用terminate函数。这样抛出异常就没有意义了,所以一般来说不应在析构函数中抛出异常。
标签:set 异常 嵌套使用 一般来说 try let 默认 拷贝构造函数 抛出异常
原文地址:http://www.cnblogs.com/mingdimowang-lyw/p/6628215.html