StackOverflowErrorStackOverflowError
Stos wywołań przekroczył swój maksymalny rozmiar, zazwyczaj z powodu głębokiej lub nieskończonej rekurencji.
Co powoduje ten błąd
Metoda wywołuje siebie rekurencyjnie bez odpowiedniego przypadku bazowego lub wzajemna rekurencja między metodami tworzy nieskończoną pętlę. Każde wywołanie metody zużywa przestrzeń stosu, aż do osiągnięcia limitu.
Jak to naprawić
Dodaj lub napraw przypadek bazowy w metodach rekurencyjnych. Zamień rekurencję na iterację. Zwiększ rozmiar stosu za pomocą flagi JVM -Xss. Sprawdź, czy w konstruktorach lub metodach toString nie ma przypadkowej nieskończonej rekurencji.
Przykład
void recurse() { recurse(); }Powiązane kody błędów
NoClassDefFoundErrorNoClassDefFoundError
Klasa była dostępna podczas kompilacji, ale nie może zostać załadowana w czasie wykonania.
DirectoryNotEmptyExceptionDirectoryNotEmptyException
Usunięcie katalogu kończy się niepowodzeniem, ponieważ katalog nie jest pusty.
IOExceptionIOException
Operacja I/O kończy się niepowodzeniem lub jest przerywana.
InvalidClassExceptionInvalidClassException
Serializowana klasa ma niezgodną wersję lub nieprawidłowy format.
IllegalArgumentExceptionIllegalArgumentException
Metoda otrzymuje argument, który jest nieprawidłowy dla oczekiwanego zakresu lub formatu.
ConcurrentModificationExceptionConcurrentModificationException
Kolekcja jest modyfikowana podczas iteracji po niej.