课堂作业 异常与处理

    动手动脑:

1.请解释一下奇怪的现象:

代码执行时不发生异常。

jvm在处理浮点数时,生成的是ddiv字节码指令,i/0,0转化为浮点数0.0,而0.0是double类型的,并不精确,所以不会抛出异常。

jvm在处理整数时,生成的是idiv字节码指令,整数除0就是除0,会抛出异常。

2.多层的多层捕获

(1)catchwho.java

运行结果截图:

(2)catchwho2.java

运行结果截图:

(3)EmbedFinally.java

运行结果截图:

3.

总结try catch finally

1)try抛出一个异常之后,程序会跳出try,不再执行try后边的语句,开始对catch进行匹配,处理异常;

2)try嵌套中,抛出的异常只有被处理才可以按顺序抛出下一个异常,如果不处理,程序就终止;

3)try抛出异常之后,就跳出了try语句,内层catch无法捕获就继续向外抛,所以外层也就有异常,外层语句不执行,第二个程序 throw  new ArithmeticExcepption没有执行。

4)第三个程序,try第一层第二层没有异常不用捕获,执行完之后到第三层,除0有异常,catch捕获,执行第三层的finally然后,顺序执行第二层,第一层的finally。

原文地址:https://www.cnblogs.com/gcc1828129658/p/7845732.html