11.Java–throw关键字
除了可以通过throws关键字抛出异常外,还可以使用throw关键字抛出异常。与throws有所不同的是,throw用于方法体内,并且抛出的是一个异常类对象,而throws关键字用在方法声明中,用来指明方法可能抛出的多个异常。
通过throw关键字抛出异常后,还需要使用throws关键字或try…catch对异常进行处理。
需要注意的是,如果throw抛出的是Error、RuntimeException或它们的子类异常现象无需使用throws关键字或try…catch对异常进行处理。
案例
public class Example34 {
// 定义printAge()输出年龄
public static void printAge(int age) throws Exception {
if (age < 0) {
// 对业务逻辑进行判断,当输入年龄为负数的时候抛出异常
throw new Exception("输入的年龄有误,必须是正整数!");
} else {
System.out.println("此人年龄为:" + age);
}
}
public static void main(String[] args) {
// 下面的代码定义了一个try...catch语句用于捕获异常
int age = -1;
try {
printAge(age);
} catch (Exception e) {
System.out.println("捕获的异常信息为:" + e.getMessage());
}
}
}
结果
例34中, printAge()方法对输人的年龄进行了逻辑判断,虽然输入负数在语法上能够通过编译,并且程序能够正常运行,但这显然与现实情况不符,因此需要在方法中对输入的内容进行判断,当数值小于0时,使用throw关键字抛出异常,并指定异常提示信息,同时,在方法后继续用throws关键字处理抛出的异常。
从图可以看出,对于代码中的业务逻辑异常,使用throw关键字抛出异常后,同样可以正确捕获异常,从而保证程序的正常运行。当然,throw关键字除了可以抛出代码的逻辑性异常外,也可以抛出Java能够自动识别的异常。