Exception nesnesi
Bir kod parçasının birden fazla exception fırlatması hiç de alışılmadık değildir. Bu durumu yönetmenin bir yolu, tüm exception'ları try-catch ile yakalayıp ardından hangi sorunun gerçekleştiğini belirlemek ve problemi debug etmek için Exception nesnesinden bilgi çıkarmaktır.
Burada, SplitTheBill uygulamasını tekrar düzenleyip genel bir Exception'ı catch ile yakalayacak ve problemin nedenini anlamak için Exception nesnesindeki verileri kullanacaksın. Exception nesneleri, probleme götüren metotların izini de içeren pek çok yararlı bilgi barındırır.
Bu egzersiz, kursun bir parçasıdır
Java'da Veri Türleri ve İstisnalar
Egzersiz talimatları
- Catch bloğunda, herhangi bir
Exception'ıcatch (Exception e)kullanarak yakala. - Catch bloğunda
Exceptionnesnesi ve referansını (e) ilegetClass()metodunu kullanarak yakalanan exception'ın türünü (sınıfını) göster. Exceptionnesnesi referansını (e) vegetMessage()metodunu kullanarak exception mesajını yazdır.Exceptionnesnesi referansını (e) veprintStackTrace()metodunu kullanarak "stack trace" çıktısını çıktı akışına yazdır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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
____.____();
}
}
}