目录
- 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);
}
}
}