• 2020.10.22作业


    阅读以下代码,写出程序运行的结果:

    public class CatchWho 
    { 
        public static void main(String[] args) 
        { 
            try 
        { 
                    try 
            { 
                        throw new ArrayIndexOutOfBoundsException(); 
                    } 
                    catch(ArrayIndexOutOfBoundsException e) 
            { 
                           System.out.println(  "ArrayIndexOutOfBoundsException" +  "/内层try-catch"); 
                    }
     
                throw new ArithmeticException(); 
            } 
            catch(ArithmeticException e) 
        { 
                System.out.println("发生ArithmeticException"); 
            } 
            catch(ArrayIndexOutOfBoundsException e) 
        { 
               System.out.println(  "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 
            } 
        } 
    }

    运行结果:

    那么接下来的代码会发生什么呢?

    public class CatchWho2 
    { 
        public static void main(String[] args) 
        { 
            try {
                    try { 
                        throw new ArrayIndexOutOfBoundsException(); 
                    }  catch(ArithmeticException e) { 
                        System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); 
                    }
         throw new ArithmeticException(); 
            } catch(ArithmeticException e) {
         
                System.out.println("发生ArithmeticException"); 
            }  catch(ArrayIndexOutOfBoundsException e) { 
                System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); 
            } 
        } 
    }

    运行结果如下:

    阅读EmbedFinally.java实例,在阅读它,观察其输出并进行总结。

    public class EmbedFinally
    {
        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时,异常在不同层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

    finally语句块一定会执行吗?

    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语句并没有执行。

  • 相关阅读:
    golang框架对比Revel and Beego
    Gin框架系列02:路由与参数
    用cp命令拷贝文件,源目录后带不带斜杠的区别
    Isilon Gen6的换盘步骤
    如何在同一行里执行多个linux命令?
    KB,MB,GB,TB,PB,EB,ZB,YB,BB
    Isilon的WebUI上指定跨时区时间的小问题
    用Powershell强制同步Windows主机与Internet time server的时间
    Remote Desktop突然不能用了 “This could be due to CredSSP encryption oracle remediation”
    打开KVM Console的一些注意事项
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13860773.html
Copyright © 2020-2023  润新知