任务描述
本关任务:接收给定的一个整数(年龄),当年龄小于 18 岁或者大于 90 岁时,抛出一个异常(Exception),提示“18岁以下,90岁以上的住客必须由亲友陪同”;当年龄处于 18 到 90 岁之间时,输出“欢迎入住本店”。
相关知识
之前我们学习了 throws 关键字,接下来我们了解一下跟它相似的 throw 关键字。
throw 关键字
throw 关键字的作用是:主动抛出异常。
首先我们来看以下代码:
public static void main(String[] args) {
int a = 10;
int b = 0;
System.out.println(a/b);
}
运行这段代码,系统会自动抛出java.lang.ArithmeticException
异常。 执行结果:
上述程序使用 throw 关键字也可以实现:
public static void main(String[] args) {
int a = 10;
int b = 0;
// 主动抛出异常
if(b == 0){
throw new ArithmeticException("/ by zero");
}
System.out.println(a/b);
}
执行结果:
throw 语句是抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常。
注意:使用 throw 关键字主动抛出检测性异常的时候,在方法名上必须使用 throws 表明调用这个方法可能存在要抛出的异常。
举个例子:
ArithmeticException
属于运行时异常,是在运行时检测的,所以上述代码编译是能通过的,而FileNotFoundException
是属于检测性异常,是在编译之前就需要处理的,所以第二段程序要加上 throws 才能通过编译。
import java.util.Scanner;
public class ExcTest {
public static void main(String[] args) throws Exception{
// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:接收给定的年龄
Scanner input = new Scanner(System.in);
int age = input.nextInt();
// 第二步:判断用户年龄,小于18或者大于90时,抛出异常
if (age < 18 | age >90){
throw new Exception("18岁以下,90岁以上的住客必须由亲友陪同");
}
// 第三步:当年龄介于18到90之间时,输出指定提示语
if (age >= 18 & age <= 90){
System.out.println("欢迎入住本酒店");
}
/********** End **********/
}
}