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
}