Kom igångKom igång gratis

Exception-objektet

Det är inte ovanligt att ett kodavsnitt kan kasta flera olika undantag. Ett sätt att hantera det är att fånga alla undantag med try-catch och sedan använda exception-objektet för att ta reda på vad som gick fel och skriva ut information från Exception för felsökning.

Här ska du modifiera SplitTheBill-applikationen igen för att catcha ett generiskt Exception och använda data från Exception-objektet för att förstå vad som orsakade problemet. Exception-objekt innehåller mycket användbar information, bland annat en spårning av metodanropen som ledde till felet.

Den här övningen är en del av kursen

Datatyper och undantag i Java

Visa kurs

Övningsinstruktioner

  • Fånga alla undantag i catch-blocket med catch (Exception e).
  • Använd Exception-objektreferensen (e) och metoden getClass() i catch-blocket för att visa typen (klassen) av det fångade undantaget.
  • Använd Exception-objektreferensen (e) och metoden getMessage() för att skriva ut undantagets meddelande.
  • Skriv ut stackspårningen till utdataströmmen med hjälp av Exception-objektreferensen (e) och metoden printStackTrace().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

class SplitTheBill {
	public static void main(String[] args) {
		BigDecimal bill = new BigDecimal(125.50);
		computeEachBill(bill, 5);
		computeEachBill(bill, 0);
	}

	public static void computeEachBill(BigDecimal bill, int people) {
		try {
			BigDecimal numPeople = new BigDecimal(people);
			BigDecimal individualBill = bill.divide(numPeople);
			System.out.println("Bill for each person is: " + individualBill);
            // Catch any exception
		} catch (____ ____) {
			System.out.println("You didn't provide a positive number of people to split the bill among.");
            // Print the type (class) of exception
			System.out.println("Type of exception: " + ____.____());
            // Print the exception message
			System.out.println(____.____());
            // Print the stack trace
            ____.____();
		}
	}
}
Redigera och kör kod