# 如何在 java 中抛出异常

> 原文： [https://beginnersbook.com/2013/04/throw-in-java/](https://beginnersbook.com/2013/04/throw-in-java/)

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

我们可以定义自己的条件或规则集，并使用`throw`关键字显式抛出异常。例如，当我们将数字除以 5 或任何其他数字时，我们可以抛出`ArithmeticException`，我们需要做的只是设置条件并使用`throw`关键字抛出任何异常。`Throw`关键字也可用于抛出自定义异常，我已在单独的教程中介绍过，请参阅 Java 中的[自定义异常](https://beginnersbook.com/2013/04/user-defined-exception-in-java/)。

**`throw`关键字语法：**

```java
throw new exception_class("error message");
```

例如：

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

## `throw`关键字的示例

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

```java
/* In this program we are checking the Student age
 * if the student age<12 and weight <40 then our program 
 * should return that the student is not eligible for registration.
 */
public class ThrowExample {
   static void checkEligibilty(int stuage, int stuweight){ 
      if(stuage<12 && stuweight<40) {
         throw new ArithmeticException("Student is not eligible for registration"); 
      }
      else {
         System.out.println("Student Entry is Valid!!"); 
      }
   } 

   public static void main(String args[]){ 
     System.out.println("Welcome to the Registration process!!");
     checkEligibilty(10, 39); 
     System.out.println("Have a nice day.."); 
 } 
}
```

输出：

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

在上面的例子中，我们抛出了一个非受检的异常，同样地，我们可以抛出[非受检](https://beginnersbook.com/2013/04/java-checked-unchecked-exceptions-with-examples/)和[用户定义的异常](https://beginnersbook.com/2013/04/user-defined-exception-in-java/)。

有关`throw`关键字的更多示例，请参阅：[`throw`关键字示例](https://beginnersbook.com/2013/04/throw-in-java/)。