Đối tượng Exception
Không hiếm khi một đoạn mã ném ra nhiều ngoại lệ. Một cách xử lý tình huống này là try-catch tất cả ngoại lệ rồi dùng đối tượng exception để xác định vấn đề gì đã xảy ra và xuất thông tin từ Exception nhằm debug lỗi.
Ở đây, bạn sẽ chỉnh sửa ứng dụng SplitTheBill thêm lần nữa để catch một Exception tổng quát và dùng dữ liệu từ đối tượng Exception để hiểu nguyên nhân gây lỗi. Các đối tượng Exception chứa rất nhiều thông tin hữu ích, bao gồm cả dấu vết (trace) các phương thức dẫn đến sự cố.
Bài tập này là một phần của khóa học
Kiểu dữ liệu và Exceptions trong Java
Hướng dẫn bài tập
- Trong khối catch, bắt mọi
Exceptionbằngcatch (Exception e). - Dùng đối tượng
Exceptionvà tham chiếu đối tượng (e) cùng phương thứcgetClass()trong khốicatchđể hiển thị kiểu (class) của ngoại lệ được bắt. - Dùng tham chiếu đối tượng
Exception(e) và phương thứcgetMessage()để in ra thông điệp của ngoại lệ. - In "stack trace" ra luồng xuất bằng tham chiếu đối tượng
Exception(e) và phương thứcprintStackTrace().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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
____.____();
}
}
}