您好,欢迎访问三七文档
异常处理作业答案评分标准:【1】编程题正确,选择题错2题以内可评A,3题以内可评B,4题以内C,5题以内D,其余E。【2】编程题基本不正确,选择题错2题以内可评B,3题以内可评C,4题以内D,其余E。选择题1.BCE2.Btry、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。因此,变量f在catch和finally块中都是未定义的,编译不能通过,正确答案是B。3.D不管有没有异常发生,finally中的语句都会被执行,所以此题输出ac,答案是D4.D子类覆盖父类的方法不能抛出父类方法未抛出的异常,抛出异常的范围不能大于父类抛出的异常。答案是D.5.BRuntimeException为方法默认抛出的异常,所以子类显式的抛出该异常没有问题。运行该程序会输出AException,答案是B6.D原因和4题一样7.F上溯造型时,方法声明抛出异常是由编译时,即父类声明抛出的异常决定。此题a.process()声明抛出了异常但没处理,所以编译出错。8.A这里没有上溯造型,直接调用子类方法。9.C多catch块自上而下必须是子类在上,父类在下。所以答案是C。10.E编程题1.编写一个程序,从键盘输入一个字符串,再把这个字符串转化成整数并输出。第一次输入523看结果是什么,第二次输入number看结果有是什么?那种情况会产生异常,是什么异常?importjava.util.Scanner;publicclassExample6_1{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println(请输入数据以回车结束!);Stringstr=scanner.nextLine();System.out.println(Integer.parseInt(str));}}第一次结果是输出523第二次会产生异常,异常类型:InputMismatchException,是运行时异常。2.编写一个异常类,用于学生类,目的是控制学生的年龄不能小于1岁大于100岁。importjava.util.Scanner;classAgeExceptionextendsException{publicStringgetMessage(){return输入的年龄超出范围,请重新输入!(10~40);}}classStudent{publicvoidsetAge(intage)throwsAgeException{if(age10||age40){thrownewAgeException();//由数据的拥有者抛出数据范围异常,但不处理异常}else{System.out.println(学生年龄为:+age);}}}publicclassExample6_2{publicstaticvoidmain(String[]args){Studentstudent=newStudent();System.out.println(请输入学生年龄:);Scannerscanner=newScanner(System.in);inti=1;try{student.setAge(scanner.nextInt());//由使用者处理异常}catch(AgeExceptione){System.out.println(e.getMessage());}}}3、编写一个异常,来控制银行卡中每次取钱的金额不能大于5000元,并且卡上的余额不能小于10元。importjava.util.InputMismatchException;importjava.util.Scanner;//====以下是两个自定义异常类=====classGetExceptionextendsException{publicStringgetMessage(){return一次提取金额不能超过5000!;}}classLimitExceptionextendsException{publicStringgetMessage(){return余额不足!;}}//银行卡类publicclassBankCard{privateintmoney;publicBankCard(intm){money=m;}publicvoidsetMoney(intmoney){this.money=money;}publicintgetMoney(){returnthis.money;}publicvoidget(intgetMon)throwsGetException,LimitException{if(getMon5000)//提取金额超过5000抛出GetException异常thrownewGetException();else{if(this.money-getMon10)thrownewLimitException();//余额不足10元抛出异常else{//提款正常的处理money=money-getMon;System.out.println(已成功提取+getMon);System.out.println(余额还有:+money);}}}publicstaticvoidmain(String[]args){BankCardcard=newBankCard(8000);Scannerscanner=newScanner(System.in);System.out.println(请输入您要提取的现金数额:);try{intmoney=scanner.nextInt();card.get(money);}catch(InputMismatchExceptionie){System.out.println(请输入正确的数字金额!);}catch(GetExceptionge){System.out.println(ge.getMessage());}catch(LimitExceptionle){System.out.println(le.getMessage());}}}
本文标题:异常处理作业答案
链接地址:https://www.777doc.com/doc-2428955 .html