举例
throw
应用场景:
public class Example {
public static void main(String[] args) {
int age = -1;
try {
if (age <= 0) {
throw new IllegalArgumentException("年龄必须大于0");
}
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
throws
应用场景:
import java.io.FileNotFoundException;
import java.io.FileReader;
public class Example {
public static void main(String[] args) throws FileNotFoundException {
FileReader fileReader = new FileReader("example.txt");
}
}
很明显的看出,两者的区别很明显,即throw
是用于手动抛出异常,throws
用于声明在该方法内抛出了异常。这是本质区别,由此衍生另外两个区别:throw 位于方法体内部,可以作为单独语句使用。throws必须跟在方法参数列表的后面,不能单独使用;throw 抛出一个异常对象,而且只能是一个。throws后面跟异常类而且可以跟多个异常类。
案例:
public class Example {
public static void main(String[] args) {
try {
divideNumbers(10, 0);
} catch (ArithmeticException | NullPointerException e) {
System.out.println("Caught exception: " + e.getMessage());
}
}
public static void divideNumbers(int num1, int num2) throws ArithmeticException, NullPointerException {
if (num2 == 0) {
throw new ArithmeticException("Cannot divide by zero");
}
if (num1 == 0) {
throw new NullPointerException("Number is null");
}
int result = num1 / num2;
System.out.println("Result: " + result);
}
}