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

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

    阅读以下代码(CatchWho.java),写出程序运行结果:

    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

    写出CatchWho2.java程序运行的结果

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

            } 

        } 

    }

    程序结果截图:

     

    辨析:finally语句块一定会执行吗?

    请通过 SystemExitAndFinally.java示例程序回答上述问题

    public class Test {

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

            }

        }

    }

    程序结果截图:

     

    编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。
    要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。

    源程序代码:

    import java.util.Scanner;

    class   AException   extends Exception

    {

    String error;

    AException ()  

    {

    error="请注意要求是输入0~100的数字";   

    }

    public String geterror()

    {

    return error;

    }

    }

    class Test

        public static void main(String args[]) 

        { 

           Scanner sc = new Scanner(System.in); 

           System.out.println("请输入考试成绩(0~100):"); 

            try 

            { 

                String s = sc.nextLine(); //读入屏幕的类型转换为S类型    

                getnum(s);//判断是否抛出异常 

            } 

            catch (AException e) 

            { 

                System.out.println(e.geterror()); 

            } 

        } 

        private static void getnum(String s) throws AException 

        { 

         for (int i = s.length(); --i >= 0;) 

            {

             int chr = s.charAt(i);

                if (chr < 48 || chr > 57)

                {

                 throw new AException(); 

                }

            }  

         double num = Double.parseDouble(s);   

            if (num < 0 || num> 100) 

            { 

                throw new AException(); 

            } 

            if (num>= 0 && num<= 60)

            { 

                System.out.print("不及格"); 

            } 

            else if (num >= 60 && num <= 70) 

            { 

                System.out.print("及格"); 

            } 

            else if (num>= 70 && num<= 80) 

            { 

                System.out.print(""); 

            }

            else if (num >= 80 && num <= 90) 

            { 

                System.out.print(""); 

            } 

            else 

            { 

                System.out.print(""); 

            } 

        } 

    }

    问题解答:

    只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行。如果在try语句块之前返回(return)或者抛出异常,try对应的finally语句块就不会执行

  • 相关阅读:
    Backbone中的model和collection在做save或者create操作时, 如何选择用POST还是PUT方法 ?
    Spring boot: Request method 'DELETE' not supported, Request method 'PUT' not supported, Request method 'POST' not supported
    Backbone.js 中的Model被Destroy后,不能触发success的一个原因
    eclipse里打开SWT项目找不到source/design的图形UI设计界面
    RHEL5.6配置本地yum源
    Linux环境下Apache反向代理金蝶中间件Apusic集群
    Linux环境下源码安装Apache2.2.25
    WIN7中Beyond Compare报错误“应用程序发生错误” 无法启动
    使用Navicat迁移MySQL数据至Oracle时大小写原因报“表或视图不存在”问题处理
    -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match问题处理
  • 原文地址:https://www.cnblogs.com/sunmei20142925/p/4966410.html
Copyright © 2011-2022 走看看