目录
- throw
- throws
- 实例
- 制造异常
在Java中,
throw
和throws
关键字都与异常处理有关,但它们的使用方式和目的有所不同。
throw
throw
关键字:
* `throw`用于在代码中显式地抛出一个异常。你可以使用它来触发一个异常,并指定异常的类型。
* `throw`通常用于在特定情况下触发异常,例如当输入数据无效或发生错误时。
* 当你使用`throw`关键字时,程序将立即中断当前操作,并跳转到处理该异常的代码。
* 示例:```java
public void validateInput(String input) {if (input == null || input.isEmpty()) {throw new IllegalArgumentException("Input cannot be null or empty");}
}
```
throws
throws
关键字:
* `throws`用于声明方法可能会抛出的异常。它告诉调用者该方法可能会抛出异常,因此调用者需要处理或继续抛出该异常。
* 当方法可能抛出受检查异常时,必须在方法签名中使用`throws`关键字进行声明。这允许调用者知道并处理这些异常。
* `throws`关键字还可以用于声明方法可能会抛出运行时异常,这些运行时异常不需要显式声明。
* 示例:```java
public void divide(int a, int b) throws ArithmeticException {if (b == 0) {throw new ArithmeticException("Division by zero is not allowed");}int result = a / b;System.out.println("Result: " + result);
}
```
在上面的示例中,divide
方法声明了它可能会抛出一个ArithmeticException
异常。当除数为零时,该方法将抛出该异常。调用者可以使用try-catch块来捕获并处理该异常,或者选择继续抛出该异常。
实例
import java.util.Scanner;public class Except05 {//这是一个main方法,是程序的入口:public static void main(String[] args) throws Exception {//实现一个功能:两个数相除,当除数为0的时候,程序出现异常。try {devide();} catch (Exception e) {e.printStackTrace();}devide();}public static void devide() throws Exception {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数:");int num1 = sc.nextInt();System.out.println("请录入第二个数:");int num2 = sc.nextInt();if(num2 == 0 ){//除数为0 ,制造异常。//制造运行时异常:/*throw new RuntimeException();*///制造检查异常:/*try {throw new Exception();} catch (Exception e) {e.printStackTrace();}*/throw new Exception();}else{System.out.println("商:"+num1/num2);}}
}