• 多态异常处理课后作业


    动手动脑:多层的异常捕获-1

    源代码:

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

            }

        }

    }

    运行结果:

    动手动脑:多层的异常捕获-2

    源代码:

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

            }

        }

    }

    运行结果:

    动手动脑

    当有多个嵌套的try…catch…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");
    }
    }

    }

    运行结果:
    结论:
    当有多层嵌套的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语句不一定执行。
  • 相关阅读:
    大数据项目实战之在线教育(01数仓需求)
    大数据项目实战之在线教育(02数仓实现)
    大数据之flink教程-TableAPI和SQL
    尚硅谷大数据技术之电商用户行为数据分析
    大数据实时项目(采集部分)
    大数据实时项目(交易额)
    作业一
    预备作业
    重建二叉树
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/4966910.html
Copyright © 2020-2023  润新知