CodeGym /Blog Java /Random-PL /Java przechwytuje wiele wyjątków
Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

Java przechwytuje wiele wyjątków

Opublikowano w grupie Random-PL
Zanim nauczysz się przechwytywać wiele wyjątków, musisz zapoznać się z podstawową obsługą wyjątków w Javie. Idąc dalej, zakładamy, że znasz blok try and catch w Javie.

Dlaczego potrzebujemy wielu bloków catch w Javie?

Wiele bloków catch w Javie jest używanych do obsługi różnych typów wyjątków. Zanim uruchomiono Javę 7, potrzebowaliśmy określonego bloku catch, aby przechwycić określony wyjątek. To stworzyło bloki nadmiarowego kodu, a tym samym spowodowało nieefektywne podejście. Spójrz na poniższy przykład, aby zobaczyć wyłapane wyjątki. Używa oddzielnych bloków catch dla różnych rodzajów wyjątków.

Przykład użycia oddzielnych bloków połowowych


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----");
	}
}

Wyjście

Całkowita liczba kolorów w widmie to: [7, 6, 5, 4, 3, 2, 1] Napotkany wyjątek java.lang.ArithmeticException: / by zero ---- Reszta kodu jest wykonywana tutaj ----
Jak widać, w powyższym przykładzie po zgłoszeniu wyjątku wykonywany jest inny blok. Istnieje wydajniejszy sposób przechwytywania wielu wyjątków przy użyciu tego samego bloku kodu do przechwytywania wyjątków różnych typów. Spójrz na poniższy przykład.

Przykład użycia bloku wielokrotnego przechwytywania w Javie


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----");
	}
}

Wyjście

Możesz odkomentować linię 13, aby wydrukować wyjątek innego rodzaju.
Całkowita liczba kolorów w widmie to: [7, 6, 5, 4, 3, 2, 1] Napotkany wyjątek java.lang.ArithmeticException: / by zero ---- Reszta kodu jest wykonywana tutaj ----

Wniosek

To był krótki przegląd używania bloku java catch wielu wyjątków. Jako wyzwanie spróbuj wydrukować wyjątek rodzica i dziecka w tym samym bloku. Zachęcamy do nauki i praktyki, aby się rozwijać. Pozdrawiam i życzę miłej nauki!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION