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语句不一定执行。
  • 相关阅读:
    JDK JRE Java虚拟机的关系
    apache和tomcat区别
    JBoss Web和 Tomcat的区别
    SOAP 与 restful service区别
    IntelliJ Idea 常用快捷键列表
    Win7用户文件夹转移
    相同IP和Mac地址的问题
    WebDriver 浅析
    Web UI 自动化测试
    python中xlrd模块的使用
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/4966910.html
Copyright © 2011-2022 走看看