RuntimeException
RuntimeExceptions không bắt buộc phải có khối try/catch trong mã. Thông thường bạn có thể tránh chúng bằng cách viết mã đúng chuẩn. Tuy nhiên, khi lỗi không được phát hiện và RuntimeException không được bắt, ứng dụng sẽ bị lỗi và hiển thị thông tin sự cố mà người dùng có thể không hiểu. Trong bài tập này, bạn sẽ thấy điều gì xảy ra khi bạn không bắt một RuntimeException có thể xảy ra và điều gì xảy ra khi bạn dùng try/catch để xử lý chúng.
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
- Xem xét các phương thức
withoutTryCatch()vàwithTryCatchtrong ứng dụng này và lưu ý điểm khác nhau giữa chúng. - Chạy ứng dụng mà không thay đổi gì - hành động này sẽ gọi phương thức
withoutTryCatch()và gây raRuntimeException. - Comment dòng 5 và bỏ comment dòng 7, sau đó chạy lại ứng dụng. Lần này phương thức
withTryCatch()sẽ chạy và xử lýRuntimeException.
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.
public class RuntimeExceptionHandling {
public static void main(String[] args) {
// Comment out this line
withoutTryCatch();
// Uncomment this line
// withTryCatch();
}
public static void withoutTryCatch() {
String[] mounts = { "Everest", "K2", "Kangchenjunga", "Lhotse" };
String selectedMount = mounts[4];
System.out.println("Selected item is: " + selectedMount);
}
public static void withTryCatch() {
try {
String[] mounts = { "Everest", "K2", "Kangchenjunga", "Lhotse" };
String selectedMount = mounts[4];
System.out.println("Selected item is: " + selectedMount);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Oops - made a mistake accessing the mounts array with a bad index.");
}
}
}