Voordat u meer leert over het afvangen van meerdere uitzonderingen, moet u bekend zijn met de basisafhandeling van uitzonderingen in Java. In de toekomst gaan we ervan uit dat u bekend bent met een try-and-catch-blok in Java.
Waarom hebben we meerdere catch-blokken nodig in Java?
Meerdere catch-blokken in Java worden gebruikt om verschillende soorten uitzonderingen af te handelen. Voordat Java 7 werd gelanceerd, hadden we een specifiek catch-blok nodig om een specifieke uitzondering op te vangen. Dit creëerde blokken overbodige code en resulteerde dus in een inefficiënte aanpak. Bekijk het volgende voorbeeld om getuige te zijn van gevangen uitzonderingen. Het gebruikt afzonderlijke catch-blokken voor verschillende soorten uitzonderingen.Voorbeeld met behulp van afzonderlijke Catch-blokken
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----");
}
}
Uitgang
Het totale aantal kleuren in een spectrum is: [7, 6, 5, 4, 3, 2, 1] Uitzondering aangetroffen java.lang.ArithmeticException: / by zero ---- Rest van de code wordt hier uitgevoerd ----
Zoals je kunt zien, wordt in het bovenstaande voorbeeld een ander blok uitgevoerd wanneer er een uitzondering wordt gegenereerd. Er is een efficiëntere manier om meerdere uitzonderingen op te vangen door hetzelfde codeblok te gebruiken voor het opvangen van uitzonderingen van verschillende typen. Kijk eens naar het volgende voorbeeld.
Voorbeeld met Multiple Catch Block in Java
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----");
}
}
Uitgang
U kunt het commentaar op regel 13 ongedaan maken om de uitzondering van een andere soort af te drukken.
Het totale aantal kleuren in een spectrum is: [7, 6, 5, 4, 3, 2, 1] Uitzondering aangetroffen java.lang.ArithmeticException: / by zero ---- Rest van de code wordt hier uitgevoerd ----
GO TO FULL VERSION