RuntimeException
RuntimeException nie wymaga bloków try/catch w kodzie – zazwyczaj można jej uniknąć, stosując dobre praktyki programistyczne. Jeśli jednak błąd nie zostanie wykryty, a RuntimeException pozostanie nieprzechwycony, aplikacja zakończy działanie z błędem i wyświetli komunikat, który użytkownik może mieć trudność ze zrozumieniem. W tym ćwiczeniu zobaczysz, co się dzieje, gdy nie przechwycisz potencjalnego RuntimeException, oraz co się zmienia, gdy użyjesz bloku try/catch.
To ćwiczenie jest częścią kursu
Typy danych i wyjątki w Javie
Instrukcje do ćwiczenia
- Przejrzyj metody
withoutTryCatch()iwithTryCatch()w tej aplikacji i zwróć uwagę na różnicę między nimi. - Uruchom aplikację bez zmian – spowoduje to wywołanie metody
withoutTryCatch(), która wyrzucaRuntimeException. - Zakomentuj linię 5, odkomentuj linię 7, a następnie uruchom aplikację ponownie – tym razem wykona się metoda
withTryCatch(), która obsługujeRuntimeException.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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.");
}
}
}