Java 中抛出异常的语句有两种,分别是 throw
和 throws
,本文将详细介绍这两个关键字的使用方法及其区别。
throw
throw
语句的格式为:
throw new 异常类名称(构造函数参数);
其中,异常类名称就是已定义的异常类,构造函数参数是为异常类的构造函数提供的参数。它可以为代码中的某个条件设置一个异常,并在需要的位置进行捕获和处理。
public static int divide(int numerator, int denominator) {
if (denominator == 0) {
throw new IllegalArgumentException("除数不可为0");
}
return numerator / denominator;
}
throws
Java 中的 throws
关键字用于声明可能会抛出哪些异常,它只是在方法签名中声明了方法可能抛出的异常,而并未实际抛出异常。格式为:
修饰符 返回类型 方法名(参数列表) throws 异常列表 {
// 方法体
}
如果不添加 throws
,那么这个方法抛出的异常只能被方法内部的 catch 语句所处理。
public void readFile(String filename) throws FileNotFoundException {
File file = new File(filename);
FileInputStream stream = new FileInputStream(file);
// ...
}
throw和throws的区别
-
位置不同
throw
位于方法内部throws
位于方法的签名处
-
内容不同
throw
+ 异常对象throws
+ 异常的类型(可以多个类型,用逗号拼接)
-
作用不同
throw
在异常出现的源头,制造异常throws
在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:
要么自己处理要么再继续向外抛出异常