Try到底是捕获还是抛出?
问题描述:
在课程4-2中,1:05的时间点老师说try抛出然后被下面的catch捕获。我觉得这样的描述与之前的说明冲突。前面说了throw才是抛出异常,抛出异常会创建异常对象并交付给运行时系统处理。try catch finally是捕获异常组合。try是执行可能产生异常的代码,catch是处理捕获的异常。所以这里说try抛出异常是否准确?如果准确为什么呢?它和throw本质上有说明区别?
”Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。“ 这我不太清楚背后实际发生的过程。我的理解是这里是指在try里出现了异常,然后这个异常如果catch声明的异常类型吻合(或为声明类型的子类)就按照catch块里的代码进行处理。但是在之前的小节里面讲过”当运行时系统捕获了这个异常对象就会进入到捕获异常环节,在这个阶段当中,运行时系统就会去寻找合适的处理器。如果找到了就会抛出与异常匹配的处理器然后执行相关的处理逻辑。”这里寻找合适的处理器是不是就是和catch声明的类进行匹配的过程?处理器是指什么?处理器做的事情就是寻找异常类然后把异常类和catch声明类进行匹配吗?
正在回答
同学你好,
1.是try块中的代码抛出异常;
2.视频中描述准确,是try块中抛出异常,try块是一个整体,所以try抛出异常的描述是准确的;
3.try-catch是积极处理,在try中抛出的异常,由catch所捕获处理,而不是将异常抛给方法的调用者,而throw是消极处理,是将异常抛给方法的调用者。
当在try块中书写throw语句时,则会在try块中会抛出异常;
4.对于第二个问题的回答:
(1)同学的理解是正确的;
(2)处理器是指try后面一系列catch代码块;
(3)处理器的作用是捕获try中抛出的异常,且抛出的异常要和处理器中声明的异常所匹配。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星