异常的处理

异常的处理只有两种方式

  • 抛出异常
  • 捕获异常

抛出异常

什么是抛出异常?

目前为止任何异常,默认的处理方式都是抛出

所谓抛出异常就是直接将错误信息打印到控制台

怎么声明抛出异常?

如果是运行时异常,不用处理,默认就会自动抛出

如果是编译期异常,想要抛出异常,语法是

位置: 在方法参数列表后,{}前

写: throws 异常类名,类名2,...

public static void main(String[] args) 
        throws ArithmeticException,ArrayIndexOutOfBoundsException {
        

}
声明抛出异常后,什么效果?

如果代码一切正常,虽然声明的有抛出异常,也不会在控制台打印异常信息

如果代码真的有异常,声明了抛出异常,

1错误信息就会在控制台打印

2抛出异常后,后续代码不再执行

throws/throw 关键字

在Java中, throwthrows 关键字是用于处理异常的。

throw 关键字用于在代码中抛出异常,而 throws 关键字用于在方法声明中指定可能会抛出的异常类型。

throw 关键字

throw 关键字用于在当前方法中抛出一个异常。

通常情况下,当代码执行到某个条件下无法继续正常执行时,可以使用 throw 关键字抛出异常,以告知调用者当前代码的执行状态。

例如,下面的代码中,在方法中判断 num 是否小于 0,如果是,则抛出一个 IllegalArgumentException 异常。

实例

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

}

finally关键字

finally 关键字用来创建在 try 代码块后面执行的代码块。

无论是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

finally 代码块出现在 catch 代码块最后,语法如下:

try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }

实例

ExcepTest.java 文件代码:

public class ExcepTest{ 
public static void main(String args[]){
int a[] = new int[2];  
try{     
System.out.println("Access element three :" + a[3]);   
}catch(ArrayIndexOutOfBoundsException e){       System.out.println("Exception thrown  :" + e); 
}  
finally{   
a[0] = 6;    
System.out.println("First element value: " +a[0]);       System.out.println("The finally statement is executed");   
}
}
}

以上实例编译运行结果如下:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
First element value: 6
The finally statement is executed
posted @ 2024-08-05 21:52  商鞅-210162701023  阅读(3)  评论(0编辑  收藏  举报