CodeGym /Java blogg /Slumpmässig /Java fånga flera undantag
John Squirrels
Nivå
San Francisco

Java fånga flera undantag

Publicerad i gruppen
Innan du lär dig om att fånga flera undantag måste du vara bekant med grundläggande undantagshantering i Java. Framöver antar vi att du är bekant med ett försök och fånga block i Java.

Varför behöver vi flera fångstblock i Java?

Flera fångstblock i Java används för att hantera olika typer av undantag. Innan Java 7 lanserades behövde vi ett specifikt fångstblock för att fånga ett specifikt undantag. Detta skapade block av redundant kod och resulterade därför i ett ineffektivt tillvägagångssätt. Ta en titt på följande exempel för att se fångade undantag. Den använder separata fångstblock för olika typer av undantag.

Exempel med separata fångstblock


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

Produktion

Totalt antal färger på ett spektrum är: [7, 6, 5, 4, 3, 2, 1] Undantag påträffas java.lang.ArithmeticException: / med noll ----Resten av koden körs här----
Som du kan se, i exemplet ovan exekveras ett annat block när ett undantag kastas. Det finns ett mer effektivt sätt att fånga flera undantag med samma kodblock för att fånga undantag av olika typer. Ta en titt på följande exempel.

Exempel med Multiple Catch Block i 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----");
	}
}

Produktion

Du kan av-kommentera rad 13 för utskrift med undantag av annat slag.
Totalt antal färger på ett spektrum är: [7, 6, 5, 4, 3, 2, 1] Undantag påträffas java.lang.ArithmeticException: / med noll ----Resten av koden körs här----

Slutsats

Detta var en snabb översikt över användningen av java catch multiple undantagsblock. Som en utmaning kan du prova att skriva ut det överordnade och det underordnade undantaget i samma block. Du uppmuntras att lära och öva för att växa. Skål och trevligt lärande!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION