Java异常处理 finally用法
2015-11-14 20:35
399 查看
“finally”的功用
资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况
finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。
注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
示例程序:
结果截图:
分析:
当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。
特别注意:
当有多层嵌套的finally时,异常在不同的层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
示例程序2
结果截图:
资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况
finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。
注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
示例程序:
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…catch…finally时,要特别注意finally的执行时机。
特别注意:
当有多层嵌套的finally时,异常在不同的层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
示例程序2
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"); } } }
结果截图:
相关文章推荐
- java内存模型-续1
- Java继承 学习 && 类初始化顺序
- java内存模型-对long和double型变量的特殊规则
- java io流 复制文本和媒体文件(TextCopy,MusicCopy)
- eclipse工具栏不显示sdk和adb图标?
- 【Java基础】List迭代并修改时出现的ConcurrentModificationException问题
- java连接数据库的步骤
- ubuntu上搭建eclipse下hadoop-2.7.1集群(全分布式)开发环境遇到的几个问题笔记
- Java多层的异常捕获
- Java 学习笔记
- java-内存模型-概述
- Java异常处理
- java打开文件对话框
- 高性能页面加载技术--BigPipe设计原理及Java简单实现
- Java的Socket通信
- Java基础之List集合原理(一)
- 搭建maven+spring+freemaker+mybatis环境之二
- Java MD5加密算法的实现
- javaWeb之JavaBean总结
- Java基础学习笔记