Sobes.tech
Middle

Jakiego typu wyjątku w Java nie można obsłużyć?

sobes.tech AI

Odpowiedź od AI

Błąd. To poważne problemy, z których nie można racjonalnie się odzyskać w aplikacji, na przykład wyczerpanie pamięci (OutOfMemoryError) lub przepełnienie stosu (StackOverflowError). Wskazują na krytyczne awarie w środowisku Java Virtual Machine (JVM).

W przeciwieństwie do Exception (które może być sprawdzane lub nie), Error należy łapać tylko w wyjątkowych przypadkach (np. podczas logowania), ale nie w celu kontynuowania normalnej pracy programu.

Przykład:

// Ten kod demonstruje Error,
// ale zwykle nie zaleca się łapania Error w produkcji
try {
    // Próba wywołania OutOfMemoryError (może nie zadziałać w zależności od ustawień JVM)
    List<byte[]> list = new ArrayList<>();
    while (true) {
        list.add(new byte[1024 * 1024]); // Przydzielamy dużo pamięci
    }
} catch (OutOfMemoryError e) {
    // Logowanie lub próba zamknięcia
    System.err.println("Krytyczny błąd: za mało pamięci!");
    e.printStackTrace();
    // Zazwyczaj tutaj wykonywana jest logika awaryjnego zamknięcia
}