zoukankan      html  css  js  c++  java
  • 多个嵌套的try…catch…finally

    请先阅读 EmbedeFinally.java示例,再运行它,观察其输出并进行总结

    源代码:

    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");       

    }   

    }

    }

    解锁的方法写在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");      

    }   

    }

    }

    总结:Java通过使用trycatchfinally语句来捕获一个或多个异常,catch语句可以有一个或多个,而且至少要一个catch语句或finally。如果某处发生异常,则try语句中此处之后的代码都不会被执行,如:

    Try{ 

    String s=”abc”;

    int i=Integer.parseInt(s);

    int a=i+10;

    }

    当程序运行时,异常发生,则try语句抛出异常对象,a=i+10;此语句位于异常发生处之后,不会被执行。

      Finally语句用法:由于当异常发生时,已经分配的资源会保持原来的状态,不能被释放,所以finally语句主要用来释放和清理有关的资源或善后工作,如关闭打开的文件等。Finally语句是一个统一的出口,即无论try语句中是否发生异常,也无论catch语句的的异常类型与try语句抛出的异常的类型是否匹配,finally语句中的代码都要被执行。Finally语句不是必需的,若在某些场合中不需要释放资源,那么trycatch语句中可以没有finally语句。

  • 相关阅读:
    小程序中父子组件间的通信与事件
    关于绝对定位那些事儿 —— 与 overflow: hidden
    关于 hover 时候闪烁的问题
    大工不巧的 前端设计 和 编程艺术
    GoF “四人组” 提出的 23 种设计模式 及 JavaScript 设计模式
    原型和继承 constructor、prototype、__proto__
    js 中的类型比较
    取模 和 取余
    音频文件播放失败 Unhandled Exception: [Object DOMException]
    C语言入门:06.基本运算
  • 原文地址:https://www.cnblogs.com/1995-qxl/p/4964293.html
Copyright © 2011-2022 走看看