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