Класс StackOverflowError
Класс StackOverflowError является подклассом
Error и
возникает, когда приложение выполняет слишком
глубокую рекурсию. Каждый вызов метода добавляет
новый фрейм в стек вызовов. Когда количество
фреймов превышает размер стека, выделенный
виртуальной машиной Java, выбрасывается данная
ошибка. Параметров у класса нет - это стандартный
конструктор без аргументов и конструктор с
сообщением.
Синтаксис
new StackOverflowError()
new StackOverflowError(String message)
Пример
Давайте вызовем бесконечную рекурсию, чтобы получить переполнение стека:
public class Main
{
public static void main(String[] args)
{
try
{
recursive();
}
catch (StackOverflowError e)
{
System.out.println("Caught: " + e.getClass().getSimpleName());
}
}
public static void recursive()
{
recursive();
}
}
Результат выполнения кода:
"Caught: StackOverflowError"
Пример
Давайте создадим объект ошибки вручную и выведем его сообщение:
public class Main
{
public static void main(String[] args)
{
StackOverflowError err = new StackOverflowError("stack limit reached");
System.out.println(err.getMessage());
}
}
Результат выполнения кода:
"stack limit reached"
Смотрите также
-
класс
Error,
который является родителем StackOverflowError -
класс
OutOfMemoryError,
который сигнализирует о нехватке памяти -
метод
getMessage,
который возвращает сообщение ошибки -
метод
printStackTrace,
который выводит трассировку стека