原文: https://beginnersbook.com/2013/04/throw-in-java/

在 Java 中,我们已经定义了异常类,例如ArithmeticExceptionNullPointerExceptionArrayIndexOutOfBounds异常等。这些异常被设置为在不同的条件下触发。例如,当我们将一个数除以零时,这会触发ArithmeticException,当我们尝试从其边界中访问数组元素时,我们得到ArrayIndexOutOfBoundsException

我们可以定义自己的条件或规则集,并使用throw关键字显式抛出异常。例如,当我们将数字除以 5 或任何其他数字时,我们可以抛出ArithmeticException,我们需要做的只是设置条件并使用throw关键字抛出任何异常。Throw关键字也可用于抛出自定义异常,我已在单独的教程中介绍过,请参阅 Java 中的自定义异常

throw关键字语法:

  1. throw new exception_class("error message");

例如:

  1. throw new ArithmeticException("dividing a number by 5 is not allowed in this program");

throw关键字的示例

假设我们有一个要求,我们只需要在年龄小于 12 且体重小于 40 的情况下注册学生,如果不满足任何条件,那么用户应该获得带有警告消息“学生没有资格注册”的ArithmeticException。我们已经通过将代码放在检查学生资格的方法中来实现逻辑,如果输入的学生年龄和体重不符合标准,那么我们使用throw关键字抛出异常。

  1. /* In this program we are checking the Student age
  2. * if the student age<12 and weight <40 then our program
  3. * should return that the student is not eligible for registration.
  4. */
  5. public class ThrowExample {
  6. static void checkEligibilty(int stuage, int stuweight){
  7. if(stuage<12 && stuweight<40) {
  8. throw new ArithmeticException("Student is not eligible for registration");
  9. }
  10. else {
  11. System.out.println("Student Entry is Valid!!");
  12. }
  13. }
  14. public static void main(String args[]){
  15. System.out.println("Welcome to the Registration process!!");
  16. checkEligibilty(10, 39);
  17. System.out.println("Have a nice day..");
  18. }
  19. }

输出:

  1. Welcome to the Registration process!!Exception in thread "main"
  2. java.lang.ArithmeticException: Student is not eligible for registration
  3. at beginnersbook.com.ThrowExample.checkEligibilty(ThrowExample.java:9)
  4. at beginnersbook.com.ThrowExample.main(ThrowExample.java:18)

在上面的例子中,我们抛出了一个非受检的异常,同样地,我们可以抛出非受检用户定义的异常

有关throw关键字的更多示例,请参阅:throw关键字示例