c++ 有关异常

2018-07-08  本文已影响0人  混世太保

异常(exception)

当抛出一个异常时,程序会暂停当前函数的执行过程并开始寻找与异常相匹配的catch子句。当throw出现在一个try block时,检查与该try块关联的catch子句。如果找到。则进行处理。如果没找到,则继续检查与外层try匹配的catch子句。一直这样展开。直到找到为止。或者退出主函数然后查找过程终止。这个过程称为 栈展开(stack unwinding)

在处理异常的过程中有个问题必须注意

栈展开过程中对象被自动销毁

在发生异常时,比如发生在构造函数中,可能有些成员已经初始化完了。有些成员还未初始化。则已构造的的成员,我们也要确保其能被正确地销毁。

在发生异常的函数中,析构函数总是会被执行,但是函数中释放资源的代码却可能被调用。(这是一个特性吧)

如果在析构函数中出现了异常。则可能导致该类异常退出。所以在析构函数中不应该抛出其不能处理的异常。如果确实要执行可能导致异常的操作,则该操作应该放在try语句块当中。

上一篇下一篇

猜你喜欢

热点阅读