学科分类
目录
Java基础

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能够自动识别的异常。

点击此处
隐藏目录