Java中的try、catch、finally块是什么?


异常是在程序执行期间发生的错误(运行时错误)。为了理解,让我们从不同的角度来看待它。

通常,当你编译程序时,如果它编译成功,就会创建一个.class文件,这是Java中的可执行文件,每次执行这个.class文件时,它都应该成功运行,程序中的每一行代码都能顺利执行,不会出现任何问题。但是,在一些特殊情况下,在执行程序的过程中,JVM会遇到一些模糊的情况,它不知道该如何处理。

以下是一些示例场景:

  • 如果你有一个大小为10的数组,如果你的代码中有一行试图访问这个数组的第11个元素。
  • 如果你试图用0除一个数(结果为无穷大,JVM不知道如何计算它)。

通常,当发生异常时,程序会在导致异常的行突然终止,程序的其余部分不会执行。为了防止这种情况,你需要处理异常。

try、catch、finally块

为了处理异常,Java提供了try-catch块机制。

try/catch块放置在可能生成异常的代码周围。try/catch块中的代码称为受保护代码。

语法

try {
   // Protected code
} catch (ExceptionName e1) {
   // Catch block
}

当try块中引发异常时,JVM不会终止程序,而是将异常详细信息存储在异常堆栈中,然后继续执行catch块。

catch语句涉及声明你试图捕获的异常类型。如果try块中发生异常,它将传递给其后的catch块(或块)。

如果发生的异常类型在catch块中列出,则异常将像参数传递到方法参数一样传递到catch块。

示例

import java.io.File;
import java.io.FileInputStream;
public class Test {
   public static void main(String args[]){
      System.out.println("Hello");
      try{
         File file =new File("my_file");
         FileInputStream fis = new FileInputStream(file);
      }catch(Exception e){
         System.out.println("Given file path is not found");
      }
   }
}

输出

Given file path is not found

finally块位于try块或catch块之后。finally块中的代码始终执行,无论是否发生异常。

示例

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

更新于:2020年7月2日

2K+ 次查看

启动你的职业生涯

通过完成课程获得认证

开始学习
广告