the*_*tor 4 c++ python exception
一般情况下,抛出并捕获异常后程序执行在哪里恢复?它会在抛出异常的代码行之后恢复,还是在它被捕获的地方继续?此外,这种行为在大多数编程语言中是否一致?
执行从捕获异常的位置恢复,即在catch
专门处理当前异常类型的块的开头。执行 catch 块,忽略其他 catch 块(将多个catch
块视为 switch 语句)。在某些语言中,finally
块也可能在catch
. 然后程序继续执行整个 后的下一条指令try ... catch ... finally ...
。
您应该注意,如果未在块中捕获异常,则异常将传播到当前函数的调用者,并在调用堆栈中向上传播,直到处理catch
异常。在这种情况下,您可以将函数调用视为宏:在调用每个函数的位置插入每个函数的代码,您将清楚地看到每个try .. catch ... finally ...
块的嵌套。
如果没有异常处理程序,程序通常会崩溃。(某些语言在这一点上可能有所不同)。
执行流程的行为在我所知道的每种语言中都是一致的。唯一的区别在于try ... catch ... finally ...
构造:finally
并不存在于每种语言中,某些语言不允许 afinally
和 acatch
在同一个块中(您必须嵌套两个try
才能使用 2),某些语言允许捕获所有内容(catch (...)
C++ 中的the )而有些语言则不然。
归档时间: |
|
查看次数: |
6078 次 |
最近记录: |