21.2异常的基本思想,在小型程序中,一旦发生异常,一般是将陈旭立即中断运行,从而无条件释放所有的资源。对于大型程序来说,运行中一旦发生异常,应该允许回复和继续运行,恢复的过程就是把产生异常所造成的恶劣影响去掉
• 在小型程序中,一旦发生异常,一般是将陈 旭立即中断运行,从而无条件释放所有的资 源。 • 对于大型程序来说,运行中一旦发生异常, 应该允许回复和继续运行。 • 恢复的过程就是把产生异常所造成的恶劣影 响去掉
21.2异常的基本思想中间可能要涉及一系列的函数调用链的退栈对象的析构,资源的释放等。继续运行就是异常处理之后,再紧接着异常处理的代码区域中继续运行。、在C++中,异常是指从发生问题的代码区域传递到处理问题的代码区域的一个对象
• 中间可能要涉及一系列的函数调用链的退栈, 对象的析构,资源的释放等。 • 继续运行就是异常处理之后,再紧接着异常 处理的代码区域中继续运行。、 • 在C++中,异常是指从发生问题的代码区域 传递到处理问题的代码区域的一个对象
21.2异常的基本思想,发生异常的地方在函数k()中。传递处理异常的地方在其f0)k()g()上层函数f()中。异常处理发生异常处理异常后,函数k()继续运行和g()都退栈。然后,程序在函数f()函数调用链中继续运行。如果不用异常处理机图21-1异常的发生、传递与处理制,在程序中单纯地嵌入错误处理语句。要实现这一目的非常艰难
图21-1 异常的发生、传递与处理 f( ) 异常处理 继续运行 g( ) k( ) 发生异常 函数调用链 传递 • 发生异常的地方在函 数k( )中。 • 处理异常的地方在其 上层函数f( )中。 • 处理异常后,函数k( ) 和g( )都退栈。 • 然后,程序在函数f( ) 中继续运行。 • 如果不用异常处理机 制,在程序中单纯地 嵌入错误处理语句。 • 要实现这一目的非常 艰难
21.2异常的基本思想·异常的基本思想是:(1)实际的资源分配(如内存申请或文件打开)通常在程序的底层进行,如上图的k()。(2)当操作失败、无法分配内存或无法打开一个文件时,在逻辑上如何进行处理通常是在程序的高层,例如上图的f()。(3)异常为从分配资源的代码转向处理错误状态的代码提供了一种表达方式
• 异常的基本思想是: • (1)实际的资源分配(如内存申请或文件打开)通 常在程序的底层进行,如上图的k( )。 • (2)当操作失败、无法分配内存或无法打开一个文 件时,在逻辑上如何进行处理通常是在程序的高层, 例如上图的f( )。 • (3)异常为从分配资源的代码转向处理错误状态的 代码提供了一种表达方式
21.2异常的基本思想如果存在中间层次的函数,例如上图的g()。,则为它们释放所分配的内存提供了机会。但这并不包括用于传递错误状态信息的代码从中可以看出,C++异常处理的目的,是在异常发生时,尽可能地减小破坏,周密地善后,而不去影响其他部分程序的运行
• 如果存在中间层次的函数,例如上图的g( )。 • 则为它们释放所分配的内存提供了机会。 • 但这并不包括用于传递错误状态信息的代码。 • 从中可以看出,C++异常处理的目的,是在 异常发生时,尽可能地减小破坏,周密地善 后,而不去影响其他部分程序的运行