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

Свойство stackTrace

Свойство stackTrace класса Error возвращает объект типа StackTrace, который содержит информацию о последовательности вызовов функций в момент создания ошибки. Это свойство доступно только для чтения. Оно позволяет отследить, где именно в коде произошла ошибка, и какие функции были вызваны до этого момента. Свойство stackTrace особенно полезно при отладке, так как показывает полный путь выполнения программы, приведший к исключительной ситуации.

Синтаксис

error.stackTrace

Пример

Давайте создадим ошибку и выведем ее трассировку стека:

void main() { try { throw Error(); } catch (e) { print(e.stackTrace); } }

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

#0 main (file:///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 firstFunction() { throw Error(); } void secondFunction() { throw Error(); } void main() { try { firstFunction(); } catch (e) { print('First error:'); print(e.stackTrace); } try { secondFunction(); } catch (e) { print('Second error:'); print(e.stackTrace); } }

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

First error: #0 firstFunction (file:///main.dart:3:9) #1 main (file:///main.dart:15:6) #2 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19) #3 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12) Second error: #0 secondFunction (file:///main.dart:8:9) #1 main (file:///main.dart:24:6) #2 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19) #3 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

Пример

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

void main() { String res = ''; try { throw Error(); } catch (e) { res = e.stackTrace.toString(); } print(res.isNotEmpty); }

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

true

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

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