异常处理作业答案
评分标准: 【1】编程题正确,选择题错2题以内可评A,3题以内可评B,4题以内C,5题以内D,其余E。
【2】编程题基本不正确,选择题错2题以内可评B,3题以内可评C,4题以内D,其余E。
? 选择题 1. BCE 2. B
try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。因此,变量f在catch和finally块中都是未定义的,编译不能通过,正确答案是B。
3. D
不管有没有异常发生,finally中的语句都会被执行,所以此题输出ac,答案是D
4. D
子类覆盖父类的方法不能抛出父类方法未抛出的异常,抛出异常的范围不能大于父类抛出的异常。答案是D.
5. B
RuntimeException为方法默认抛出的异常,所以子类显式的抛出该异常没有问题。运行该程序会输出 A Exception,答案是B
6. D
原因和4题一样
7. F
上溯造型时,方法声明抛出异常是由编译时,即父类声明抛出的异常决定。此题 a. process()声明抛出了异常但没处理,所以编译出错。
8. A
这里没有上溯造型,直接调用子类方法。
9. C
多catch块自上而下必须是子类在上,父类在下。所以答案是C。
10. E
? 编程题
1. 编写一个程序,从键盘输入一个字符串,再把这个字符串转化成整数并
输出。第一次输入523看结果是什么,第二次输入number看结果有是什么?那种情况会产生异常,是什么异常?
import java.util.Scanner; public class Example6_1{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); }
System.out.println (\请输入数据以回车结束!\ String str = scanner.nextLine();
System.out.println(Integer.parseInt(str)); }
第一次结果是输出523
第二次会产生异常,异常类型:InputMismatchException,是运行时异常。
2. 编写一个异常类,用于学生类,目的是控制学生的年龄不能小于1岁大于100岁。
import java.util.Scanner;
class AgeException extends Exception { public String getMessage() {
return \输入的年龄超出范围,请重新输入!(10~40)\ } }
class Student {
public void setAge(int age) throws AgeException { if (age < 10 || age > 40) {
throw new AgeException();//由数据的拥有者抛出数据范围异常,但不处理异常
} else {
System.out.println(\学生年龄为:\ } } }
public class Example6_2 {
}
public static void main(String[] args) { Student student = new Student(); }
System.out.println(\请输入学生年龄:\
Scanner scanner = new Scanner(System.in); int i=1; try {
student.setAge(scanner.nextInt());//由使用者处理异常 } catch (AgeException e) {
System.out.println (e.getMessage()); }
3、编写一个异常,来控制银行卡中每次取钱的金额不能大于5000元,并且卡上的余额不能小于10元。
import java.util.InputMismatchException; import java.util.Scanner;
//====以下是两个自定义异常类=====
class GetException extends Exception{
public String getMessage() {
return \一次提取金额不能超过5000!\ } }
class LimitException extends Exception{
public String getMessage(){ return \余额不足!\ } }
//银行卡类
public class BankCard {
private int money;
public BankCard(int m){ money = m; }
}
public void setMoney(int money ){ this.money=money; }
public int getMoney(){ return this.money; }
public void get(int getMon) throws GetException,LimitException{
if(getMon>5000) //提取金额超过5000抛出GetException异常 throw new GetException(); else{
if(this.money-getMon<10)
throw new LimitException();//余额不足10元抛出异常 else{ //提款正常的处理
money = money-getMon;
System.out.println (\已成功提取\ System.out.println (\余额还有:\ } } }
public static void main(String[] args){ BankCard card=new BankCard(8000);
Scanner scanner =new Scanner(System.in); }
System.out.println(\请输入您要提取的现金数额:\try{
int money=scanner.nextInt(); card.get(money);
}catch(InputMismatchException ie){
System.out.println(\请输入正确的数字金额!\}catch(GetException ge){
System.out.println(ge.getMessage()); }catch(LimitException le){
System.out.println(le.getMessage()); }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库异常处理作业答案在线全文阅读。
相关推荐: