尚学堂-第六章答案

一、选择题

1.以下关于异常的代码的执行结果是( )。(选择一项)

public class Test {
    public static void main(String args[]) {
        try {
            System.out.print("try");           
            return;
        } catch(Exception e){
            System.out.print("catch");
        }finally {
            System.out.print("finally");
        }
    }
}

A.try catch finally

B.catch finally

C.try finally

D.try

2.在异常处理中,如释放资源、关闭文件等由( )来完成。(选择一项)

Atry子句

B.catch子句

C.finally子句

D.throw子句

3.阅读如下Java代码,其中错误的行是( )。(选择二项)

public class Student {
    private String stuId;
    public void setStuId(String stuId) throw Exception { // 1
        if (stuId.length() != 4) { // 2
            throws new Exception("学号必须为4位!"); // 3
        } else {
            this.stuId = stuId;     //4
        }
    }
}

A.1

B.2

C.3

D.全部正确

4.下面选项中属于运行时异常的是( )。(选择二项)

A.Exception和SexException

B.NullPointerException和InputMismatchException

C.ArithmeticException和ArrayIndexOutOfBoundsException

D.ClassNotFoundException和ClassCastException

5.阅读如下Java代码,在控制台输入"-1",执行结果是()。(选择一项)

public class Demo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入数字:");
        try {
            int num = input.nextInt();
            if (num < 1 || num > 4) {
                throw new Exception("必须在1-4之间!");
            }
        } catch (InputMismatchException e) {
            System.out.println("InputMismatchException");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

A.输出:InputMismatchException

B.输出:必须在1-4之间!

C.什么也没输出

D.编译错误

二、简答题

  1. Error和Exception的区别。
    Error是程序无法处理的错误,表明系统JVM已经处于不可恢复的崩溃状态中。
    Exception是程序本身能够处理的异常。

  2. Checked异常和Runtime异常的区别。
    Runtime异常包含了一大类被 0 除、数组下标越界、空指针等异常,产生频繁,如果用throw或try catch对可读性和运行效率影响较大,从而通过系统检测和处理的异常。
    Checked异常为除了Runtime异常后剩下的异常,需要在编译时就进行处理,否则无法通过编译。

  3. Java异常处理中,关键字try、catch、finally、throw、throws分别代表什么含义?
    try指定了异常捕获并处理的范围。
    catch代表异常捕获,捕获异常对象并作相应处理。
    throw用于手动地抛出异常对象,throw后面需要一个异常对象。
    throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类。

  4. throws和throw的区别。
    throw用于手动地抛出异常对象,throw后面需要一个异常对象。
    throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类。

三、编码题

  1. 编写程序接收用户输入分数信息,如果分数在0—100之间,输出成绩。如果成绩不在该范围内,抛出异常信息,提示分数必须在0—100之间。

要求:使用自定义异常实现。

import java.util.Scanner;

class IlegalException extends Exception{
	public IlegalException() {
	}
	
	public IlegalException(String msg) {
		super(msg);
	}
}


class Score{
	private float score;
	
	public void setScore() throws IlegalException{
		float getScore;
		System.out.println("请输入分数:");
		Scanner scanner = new Scanner(System.in);
		getScore = scanner.nextFloat();
		if(getScore<0||getScore>100) {
			 throw new IlegalException("分数不在0~100之间");
		}
		this.score = getScore;
	}
}

public class Sixth1 {
	public static void main(String[] args) throws IlegalException {
		Score score =  new Score();
		score.setScore();
	}
}

  1. 写一个方法void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息 “a,b,c不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数, 调用此方法,并捕获异常。
import java.util.Scanner;

class IllegalArgumentException extends Exception{
	public IllegalArgumentException() {
	}
	
	public IllegalArgumentException(String msg) {
		super(msg);
	}
}

public class Sixth2 {
	
	static void isTriangle(int a,int b,int c) throws IllegalArgumentException {
		if(a+b<=c || a+c<=b || b+c<=a) {
			throw new IllegalArgumentException("a,b,c不能构成三角形");
		}
		System.out.println("a="+a+",b="+b+",c="+c);
	}
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int a,b,c;
		System.out.println("请输入三角形的边长a:");
		a=scanner.nextInt();
		System.out.println("请输入三角形的边长b:");
		b=scanner.nextInt();
		System.out.println("请输入三角形的边长c:");
		c=scanner.nextInt();
		try {
			isTriangle(a, b, c);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			System.exit(-1);
		}
		
	}
}
  1. 编写一个计算N个学生分数平均分的程序。程序应该提示用户输入N的值,如何必须输入所有N个学生分数。如果用户输入的分数是一个负数,则应该抛出一个异常并捕获,提示“分数必须是正数或者0”。并提示用户再次输入该分数。
import java.util.Scanner;

class IlegalScoreException extends Exception{
	public IlegalScoreException() {
	}
	
	public IlegalScoreException(String msg) {
		super(msg);
	}
}

public class Sixth3 {
	
	public static void check(int k)  throws IlegalScoreException{
		if(k<0) {
			throw new IlegalScoreException("分数必须是正数或者0");
		}
	}
	
	public static void main(String[] args) {
		int N;
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入学生数:");
		N = scanner.nextInt();
		
		for(int i =1;i<=N;i++) {
			int k;
			System.out.println("第"+i+"位学生成绩是:");
			k=scanner.nextInt();
			try {
				check(k);
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("格式不正确,请重新输入");
				i -= 1;
			}
			
		}
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值