CodeGym /Java 博客 /随机的 /Java 捕获多个异常
John Squirrels
第 41 级
San Francisco

Java 捕获多个异常

已在 随机的 群组中发布
在学习捕获多个异常之前,您需要熟悉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----");
	}
}

输出

您可以取消注释第 13 行以打印出其他类型的异常。
光谱上的总颜色为:[7, 6, 5, 4, 3, 2, 1]

结论

这是使用 java catch multiple exceptions 块的快速概述。作为挑战,尝试在同一个块中打印父异常和子异常。我们鼓励您学习和实践以成长。干杯,快乐学习!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION