zoukankan      html  css  js  c++  java
  • 多态异常处理课后作业

    动手动脑:多层的异常捕获-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语句不一定执行。
  • 相关阅读:
    单例模式
    简单工厂模式
    MSSQL编程笔记三 left join on 和 left join where区别
    冒泡排序、选择排序和插入排序
    Extjs性能问题
    C#委托入门
    metro css for cnblogs
    委托、事件与Observer设计模式
    C# 集合类[转]
    工厂方法模式(Factory Method Pattern)
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/4966910.html
Copyright © 2011-2022 走看看