การโยนและส่งต่อ Exception
เมื่อเมธอดหนึ่งโยน exception ออกมา เมธอดที่เรียกใช้จะต้องจัดการกับ exception นั้น โดยอาจใช้ try/catch เพื่อดักจับ หรือส่งต่อ exception ไปยังเมธอดที่เรียกมาอีกทีก็ได้ ในแบบฝึกหัดนี้ จะได้เห็นว่าเมธอดที่เรียกใช้สามารถส่งต่อ exception ได้อย่างไร
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java
คำแนะนำการฝึกหัด
- เรียกใช้เมธอด
dineOut()โดยส่งจำนวน 9 คน เพื่อให้เกิดExceptionขึ้น - เนื่องจากเมธอด
dineOut()ไม่ได้จัดการ exception เอง ให้ส่งต่อExceptionออกไป - เนื่องจากเมธอด
splitBill()ไม่ได้จัดการ exception เอง ให้โยนExceptionออกไป
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
public class RethrowingExample {
public static void main(String[] args) {
try {
// Trigger the exception by calling dineOut with 9 people
dineOut(____, 50.00);
} catch (Exception e) {
System.out.println("Atempting to divide bill with too many diners");
}
}
// Rethrow the Exception
public static void dineOut(int people, double bill) ____ ____ {
double each = splitBill(bill, people);
System.out.println("Bill for each person: " + each);
}
// Throw the Exception
public static double splitBill(double bill, int people) ____ ____ {
if (people < 3) {
return bill / people;
} else {
throw new Exception();
}
}
}