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

Тип Never

Тип Never в Dart - это специальный тип, который не содержит ни одного значения. Он является подтипом всех остальных типов. Переменная типа Never не может быть инициализирована никаким значением, поэтому такая переменная не может существовать в рабочем коде. Основное применение типа Never - это указание на то, что функция никогда не завершается нормально: она либо всегда выбрасывает исключение, либо выполняется бесконечно. Также Never используется в обобщённых типах, например в Future<Never> или List<Never>, для обозначения контейнеров, которые не могут содержать значений.

Синтаксис

Never

Пример

Давайте объявим функцию, которая всегда выбрасывает исключение. Её возвращаемый тип - Never, так как она никогда не возвращает значение:

Never throwError() { throw Exception('Something went wrong'); } void main() { try { throwError(); } catch (e) { print('Caught: $e'); } }

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

"Caught: Exception: Something went wrong"

Пример

Давайте используем тип Never в обобщённом контейнере. Список типа List<Never> не может содержать ни одного элемента, поэтому его длина всегда равна нулю:

void main() { List<Never> res = []; print(res); print(res.length); }

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

[] 0

Пример

Давайте напишем функцию, которая возвращает тип Never через приведение типа. Такая функция может быть полезна для прерывания выполнения программы в недостижимых ветках кода:

Never fail(String message) { throw StateError(message); } int divide(int a, int b) { if (b == 0) { fail('Division by zero'); } return a ~/ b; } void main() { print(divide(10, 2)); }

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

5

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

  • тип void,
    который обозначает отсутствие возвращаемого значения
  • тип dynamic,
    который допускает значения любого типа
  • тип nullable object,
    который допускает значение null
  • тип Type,
    который представляет тип во время выполнения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить