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

Функция Error.throwWithStackTrace

Функция Error.throwWithStackTrace выбрасывает переданную ошибку, прикрепляя к ней заранее подготовленную трассировку стека. В первый параметр мы передаем ошибку, которую нужно выбросить, во второй - объект трассировки стека типа StackTrace. В отличие от обычного оператора throw, данная функция позволяет сохранить исходную трассировку стека, что особенно полезно при повторном выбрасывании или асинхронной обработке ошибок.

Синтаксис

Error.throwWithStackTrace(error, stackTrace)

Пример

Давайте выбросим ошибку с текущей трассировкой стека и перехватим её:

void main() { try { Error.throwWithStackTrace( 'abcde', StackTrace.current ); } catch (e) { print('Caught: $e'); } }

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

"Caught: abcde"

Пример

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

void main() { StackTrace? savedTrace; try { throw 'abcde'; } catch (e, stackTrace) { savedTrace = stackTrace; } try { Error.throwWithStackTrace('12345', savedTrace!); } catch (e, stackTrace) { print('Caught: $e'); print(stackTrace.toString().isNotEmpty); } }

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

"Caught: 12345" "true"

Пример

Давайте выбросим объект ошибки ArgumentError с сохраненной трассировкой стека:

void main() { StackTrace? savedTrace; try { throw ArgumentError('invalid value'); } catch (e, stackTrace) { savedTrace = stackTrace; } try { Error.throwWithStackTrace( ArgumentError('value must be positive'), savedTrace! ); } catch (e) { print(e); } }

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

"Invalid argument(s): value must be positive"

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

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