尚学堂-第六章答案
一、选择题
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.编译错误
二、简答题
- Error和Exception的区别。
Error是程序无法处理的错误,表明系统JVM已经处于不可恢复的崩溃状态中。
Exception是程序本身能够处理的异常。
- Checked异常和Runtime异常的区别。
Runtime异常包含了一大类被 0 除、数组下标越界、空指针等异常,产生频繁,如果用throw或try catch对可读性和运行效率影响较大,从而通过系统检测和处理的异常。
Checked异常为除了Runtime异常后剩下的异常,需要在编译时就进行处理,否则无法通过编译。
- Java异常处理中,关键字try、catch、finally、throw、throws分别代表什么含义?
try指定了异常捕获并处理的范围。
catch代表异常捕获,捕获异常对象并作相应处理。
throw用于手动地抛出异常对象,throw后面需要一个异常对象。
throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类。
- throws和throw的区别。
throw用于手动地抛出异常对象,throw后面需要一个异常对象。
throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类。
- 编写程序接收用户输入分数信息,如果分数在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();
}
}
- 写一个方法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);
} }
}
- 编写一个计算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;
}}
}
}
文章图片
推荐阅读
- 【无戒学堂】一些大问题?|【无戒学堂】一些大问题? 01
- 萌哥与辉哥(第六集)|萌哥与辉哥(第六集) | 小别离
- 欢乐小分队内蒙东北行第六站(第十二天)五大连池印象之(奇特壮观的火山地貌景观)
- [无戒学堂]读《百岁人生》第一章随记
- 录像|录像 【 心靈自由·写作群】第二十期·2018年7月第六篇作业
- 第六章|第六章 Sleuth--链路追踪
- 让爱在师生间流淌
- 她,是原罪|她,是原罪 第六章
- 第六波财富,抓住机会轻松实现月薪过万
- 辣妈穿搭时尚个性,时尚辣妈出街,整体气质嗨翻天!!