添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
在学习捕获多个异常之前,您需要熟悉Java 中的基本 异常处理。 接下来,我们假设您熟悉 Java 中的 try 和 catch 块。

为什么我们需要在 Java 中使用多个 catch 块?

Java中的多个catch块用于处理不同类型的异常。在 Java 7 推出之前,我们需要一个特定的 catch 块来捕获特定的异常。这创建了冗余代码块,因此导致了一种低效的方法。看看下面的例子来见证捕获的异常。它针对不同类型的异常使用单独的 catch 块。

使用单独的 Catch 块的示例

import java.util.Arrays; public class ExceptionHandler { public static void main(String[] args) { Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1, 0 }; try { System.out.println("Total number of options on a dice are: " + Arrays.toString(colorsOfASpectrum)); // un-comment the following line to see "Index Out of Bounds Exception" // colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception } catch (ArrayIndexOutOfBoundsException e) { // This catch block executes in case of "Index Out of Bounds Exception" System.out.println("Array Index Out Of Bounds Exception " + e); } catch (ArithmeticException e) { // This catch block executes in case of "Arithmetic Exception" System.out.println("Arithmetic Exception " + e); System.out.println("\n----Rest of the code executes here----"); 光谱上的总颜色为:[7, 6, 5, 4, 3, 2, 1]
如您所见,在上面的示例中,抛出异常时会执行不同的块。有一种更有效的方法来捕获多个异常,使用同一代码块来捕获不同类型的异常。看看下面的例子。

在 Java 中使用多个 Catch 块的示例

import java.util.Arrays; public class MultiExceptionHandler { public static void main(String[] args) { Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1 }; try { System.out.println("Total colors on a spectrum are: " + Arrays.toString(colorsOfASpectrum)); // colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception } catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { // We don't need two different catch blocks for different kinds of exceptions // Both exceptions will be handled using this multiple catch block System.out.println("Exception Encountered " + e); System.out.println("\n----Rest of the code executes here----"); CodeGym 是一个从零开始学习 Java 语言编程的在线课程。本课程是初学者掌握 Java 语言的绝佳方式。它包含 1200 多个可即时验证的任务,以及基本范围内的 Java 基础理论。为了帮助你在教育上取得成功,我们实现了一组激励功能:小测验、编码项目以及有关高效学习和 Java 语言开发人员职业方面的内容。