Mielőtt megismerné a több kivétel elfogását, ismernie kell a Java alapvető kivételkezelését . A továbbiakban feltételezzük, hogy ismeri a Java try and catch blokkját.
Miért van szükségünk több fogási blokkra a Java-ban?
A Java több fogási blokkja a különböző típusú kivételek kezelésére szolgál. A Java 7 elindítása előtt szükségünk volt egy speciális fogási blokkra, hogy elkapjunk egy adott kivételt. Ez redundáns kódblokkokat hozott létre, és így nem hatékony megközelítést eredményezett. Vessen egy pillantást a következő példára, hogy szemtanúja legyen a kivételeknek. Külön fogási blokkokat használ a különböző kivételekhez.Példa különálló fogóblokkok használatára
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----");
}
}
Kimenet
A spektrum összes színe: [7, 6, 5, 4, 3, 2, 1] Kivétel tapasztalható java.lang.ArithmeticException: / nullával ---- A kód többi része itt fut le----
Amint látható, a fenti példában egy másik blokk kerül végrehajtásra, amikor kivételt dob. Létezik egy hatékonyabb módszer több kivétel elfogására ugyanazon kódblokk használatával a különböző típusú kivételek elkapására. Vessen egy pillantást a következő példára.
Példa a Multiple Catch Block használatára Java-ban
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----");
}
}
Kimenet
A 13. sor megjegyzését törölheti, ha kinyomtatja az egyéb kivételeket.
A spektrum összes színe: [7, 6, 5, 4, 3, 2, 1] Kivétel tapasztalható java.lang.ArithmeticException: / nullával ---- A kód többi része itt fut le----
GO TO FULL VERSION