try{
// 待检测的程序代码
}catch(异常类型1 异常的变量名1){
// 若为异常类型1采取操作
}catch(异常类型2 异常的变量名2){
// 若为异常类型2采取操作
}finally{
// 无论是否发生异常,finally 代码块中的代码总会被执行,起善后收尾作用。
}```
非检查型异常(或运行时异常,继承自RuntimeException
):这些异常在编译时不需要被处理,它们通常表示编程错误,如空指针异常(NullPointerException
)、数组越界异常(ArrayIndexOutOfBoundsException
)等。RuntimeException
及其子类都属于非检查型异常,因此它们可以不被try-catch
块捕获,也不需要使用throws
关键字声明抛出。
throws/throw 关键字
在Java中, throw 和 throws 关键字是用于处理异常的。
throw 关键字用于在代码中抛出异常,而 throws 关键字用于在方法声明中指定可能会抛出的异常类型。在你的代码中,throw new Exception(“A custom error occurred”);这行代码是在list.size()>1的情况下主动抛出一个异常。这意味着,如果列表的大小大于1,那么你希望程序立即停止,并通知调用者发生了一个错误。这个错误信息就是"A custom error occurred"
throw 关键字
throw 关键字用于在当前方法中抛出一个异常。
通常情况下,当代码执行到某个条件下无法继续正常执行时,可以使用 throw 关键字抛出异常,以告知调用者当前代码的执行状态。
例如,下面的代码中,在方法中判断 num 是否小于 0,如果是,则抛出一个 IllegalArgumentException 异常。
实例
而throw则是用来主动抛出一个异常,转到catch处理。当你的代码遇到了一个错误情况,你希望立即停止当前的操作,并将错误信息传递给调用者,那么你可以使用throw来抛出一个异常。
public void checkNumber(int num) {
if (num < 0) {
throw new IllegalArgumentException("Number must be positive");
}
}
throws 关键字
throws 关键字用于在方法声明中指定该方法可能抛出的异常,不处理,抛给上层调用者。当方法内部抛出指定类型的异常时,该异常会被传递给调用该方法的代码,并在该代码中处理异常。
例如,下面的代码中,当 readFile 方法内部发生 IOException 异常时,会将该异常传递给调用该方法的代码。在调用该方法的代码中,必须捕获或声明处理 IOException 异常。
实例
public void readFile(String filePath) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close();
}
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
例如,下面的方法声明抛出 RemoteException 和 InsufficientFundsException:
import java.io.*;
public class className {
public void withdraw(double amount) throws RemoteException, InsufficientFundsException
{ // Method implementation } //Remainder of class definition }