Board logo

标题: 关于try语句嵌套执行的问题 [打印本页]

作者: bool_sir    时间: 2010-12-4 08:58     标题: 关于try语句嵌套执行的问题

关于异常处理书中的论述:
(1)当异常发生时,系统将搜索与当前try块相关的最近的可以处理该异常的catch块,
(2)如果与当前try块相关的所有catch块都不能处理该异常则沿着堆栈向上搜索封闭该异常代码的try块及其相关联的catch块。
(3)如果还没有找到,则重复上述过程,直到找到catch块。
(4)如果到达堆栈顶部任然没有找到处理该异常的catch块,则由默认的一场处理程序处理该异常,然后应用程序终止。

问题是:catch 怎么知道这个异常归我处理,通过catch()括号中的表达式吗?但我看到的书中例子似乎没有对异常作出判断。书中179页,一个try嵌套语句例子,第一try已经处理了异常,为什么最外层的try还会处理这个异常?这种冒泡式的处理到底是什么时候停止冒泡 ?
作者: bool_sir    时间: 2010-12-4 09:01

catch 语句 加()与不加()的区别是不是 :不加括号的catch 对任何异常都处理,加了括号的catch对特定异常进行处理?
作者: dorient    时间: 2010-12-4 12:19

catch(Exception)可以捕获所有以Exception类派生的异常,而不带参数的catch可以捕获所有异常,不管异常是不是从Exception类派生。
作者: dorient    时间: 2010-12-4 12:22

问题是:catch 怎么知道这个异常归我处理,通过catch()括号中的表达式吗?但我看到的书中例子似乎没有对异常作出判断。书中179页,一个try嵌套语句例子,第一try已经处理了异常,为什么最外层的try还会处理这个异常?这种冒泡式的处理到底是什么时候停止冒泡 ?

第二个try(即内部的try语句)只是抛出了异常,第一个try(外部的try语句)捕捉了第二个try语句抛出的异常,并进行处理。
作者: bool_sir    时间: 2010-12-6 20:46

明了 谢谢 老师




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0