时间:2021-05-19
这篇文章主要介绍了java抛出异常与finally实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码如下:
package test1;public class EmbededFinally { public static void main(String args[]) { int result; try { System.out.println("in Level 1"); try { System.out.println("in Level 2"); // result=100/0; //Level 2 try { System.out.println("in Level 3"); result=100/0; //Level 3 } catch (Exception e) { System.out.println("Level 3:" + e.getClass().toString()); } finally { System.out.println("In Level 3 finally"); } // result=100/0; //Level 2 } catch (Exception e) { System.out.println("Level 2:" + e.getClass().toString()); } finally { System.out.println("In Level 2 finally"); } // result = 100 / 0; //level 1 } catch (Exception e) { System.out.println("Level 1:" + e.getClass().toString()); } finally { System.out.println("In Level 1 finally"); } }}运行结果如上图:
对于代码的分析: 前三行输出结果,是try中三个正常的输出语句,并且在最后抛出了一个by zero错误。然后用catch语句捕捉了这个语句,并且输出了语句。但我们会发现后面的catch语句都没有被执行,而是直接执行了finally语句,说明finally语句改变了代码中输出的逻辑。但具体的原因尚不明确。
最后,提出一个小问题:finally语句一定会执行吗?
我姑且自己回答一下,如果在finally之前使用了exit,退出了程序,那么finally语句就不会执行了。
比如,我们用以下的测试代码:
package test1;public class SystemExitAndFinally { public static void main(String[] args) { try{ System.out.println("in main"); throw new Exception("Exception is thrown in main"); //System.exit(0); } catch(Exception e) { System.out.println(e.getMessage()); System.exit(0); } finally { System.out.println("in finally"); } }}运行结果如图:
我们可以看到,finally后的语句并没有被输出,而在退出程序前的语句并没有任何影响。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这是一个介绍基本异常处理的小例子,包括抛出,捕获,断言,日志。Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理
java异常处理机制的两类1、抓:异常的处理,有两种方式①try-catch-finally②throws2、抛:①自动抛出可以理解为所有没有使用throw关键
本文实例讲述了Java抛出异常与自定义异常类。分享给大家供大家参考,具体如下:异常处理常用方法:常用的异常处理方法有:一、try()catch()语句二、thr
异常处理机制1、抛出异常2、捕获异常3、异常处理五个关键字:try、catch、finally、throw、throws注意:假设要捕获多个异常:需要按照层级关
本文实例为大家分享了Java异常处理的具体代码,供大家参考,具体内容如下一.异常的分类1.由Java虚拟机抛出的异常(Error):程序无法处理的问题,用户不用