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

Класс StackTrace

Класс StackTrace используется для представления трассировки стека - последовательности вызовов функций и методов, которая привела к текущему моменту выполнения программы. Чаще всего объект этого класса создается автоматически при возникновении исключения и передается в блок catch вторым параметром. Класс не имеет публичного конструктора для прямого создания, однако содержит статическое свойство current, возвращающее текущую трассировку. Метод toString преобразует трассировку в читаемую строку.

Синтаксис

StackTrace.current stackTrace.toString()

Пример

Давайте получим текущую трассировку стека с помощью свойства current и выведем ее первый фрагмент:

void main() { StackTrace stackTrace = StackTrace.current; print(stackTrace.toString().split('\n').first); }

Результат выполнения кода (путь и номер строки могут отличаться):

"#0 main (file:///path/to/main.dart:3:28)"

Пример

Давайте перехватим исключение и выведем его трассировку стека в блоке catch:

void main() { try { throw Exception('Something went wrong'); } catch (e, stackTrace) { print('Error: $e'); print('Stack trace:'); print(stackTrace); } }

Результат выполнения кода (адреса и номера строк могут отличаться):

"Error: Exception: Something went wrong" "Stack trace:" "#0 main (file:///path/to/main.dart:5:11)" "#1 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)" "#2 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)"

Пример

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

void main() { try { throw StateError('Invalid state'); } catch (e, stackTrace) { List<String> frames = stackTrace.toString().split('\n'); for (String frame in frames) { if (frame.contains('main.dart')) { print(frame); } } } }

Результат выполнения кода (номер строки может отличаться):

"#0 main (file:///path/to/main.dart:5:11)"

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

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