在学习捕获多个异常之前,您需要熟悉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 语言开发人员职业方面的内容。