• 多个嵌套的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语句。

  • 相关阅读:
    itest(爱测试) 紧急 BUG 修复版(4.5.6)发布,,开源BUG 跟踪管理 & 敏捷测试管理&极简项目管理软件
    itest(爱测试) 4.5.5 发布,开源BUG 跟踪管理 & 敏捷测试管理&极简项目管理软件
    itest(爱测试) 4.5.2 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    itest(爱测试) 4.5.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    itest(爱测试) 4.5.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    itest(爱测试) 4.4.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    itest(爱测试) 4.3.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    itest(爱测试) 4.3.0 发布,开源BUG 跟踪管理 & 敏捷测试管理软件
    热烈庆祝itest 入围2019最受欢迎国产开源软件
    Web渗透测试 之 文件上传、文件包含
  • 原文地址:https://www.cnblogs.com/1995-qxl/p/4964293.html
Copyright © 2020-2023  润新知