РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
455 of 723 menu

Класс StackOverflowError

Класс StackOverflowError представляет собой ошибку, которая возникает, когда стек вызовов программы переполняется. Это обычно происходит при бесконечной рекурсии или слишком глубокой вложенности вызовов функций. Данный класс наследуется от класса Error и не имеет собственных параметров или методов, кроме унаследованных. При переполнении стека виртуальная машина Dart выбрасывает экземпляр StackOverflowError, который можно перехватить с помощью конструкций обработки ошибок.

Синтаксис

StackOverflowError()

Класс не имеет публичных конструкторов для прямого создания экземпляров в пользовательском коде. Объекты этого класса создаются средой выполнения Dart автоматически при возникновении соответствующей ошибки.

Пример

Давайте рассмотрим пример, в котором возникает переполнение стека из-за бесконечной рекурсии. Функция recursive вызывает саму себя без условия выхода:

void recursive() { recursive(); } void main() { try { recursive(); } on StackOverflowError catch (e) { print('Caught: $e'); } }

Результат выполнения кода:

"Caught: Stack Overflow"

Пример

Давайте рассмотрим пример с глубокой, но конечной рекурсией, которая также может привести к переполнению стека при достаточно большом значении параметра:

int sum(int n) { if (n == 0) { return 0; } return n + sum(n - 1); } void main() { try { print(sum(1000000)); } on StackOverflowError catch (e) { print('Stack overflow occurred'); } }

Результат выполнения кода:

"Stack overflow occurred"

Смотрите также

  • класс Error,
    базовый класс для всех ошибок
  • класс Exception,
    базовый класс для исключений
  • конструкция try,
    которая позволяет обрабатывать ошибки
  • конструкция catch,
    которая перехватывает ошибки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить