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
Övningsinstruktioner
- Fånga alla undantag i catch-blocket med
catch (Exception e). - Använd
Exception-objektreferensen (e) och metodengetClass()i catch-blocket för att visa typen (klassen) av det fångade undantaget. - Använd
Exception-objektreferensen (e) och metodengetMessage()för att skriva ut undantagets meddelande. - Skriv ut stackspårningen till utdataströmmen med hjälp av
Exception-objektreferensen (e) och metodenprintStackTrace().
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
____.____();
}
}
}