Тип Never — индикатор того, что выражение никогда не завершится успешно. Он используется для функций и методов, которые либо выбрасывают исключение, либо входят в бесконечный цикл.
Примеры использования:
Функция, выбрасывающая исключение:
dart
Функция с бесконечным циклом:
dart
Основное преимущество Never в том, что он помогает компилятору понять, что код после вызова такой функции или метода недостижим, что позволяет выполнять статический анализ для улавливания потенциальных ошибок, например, недостижимого кода и неправильной обработки ошибок.
В отличие от void, который означает, что функция не возвращает значение (но успешно завершается), Never означает, что функция никогда не завершится в принципе.
dart
Тип Never является нижним типом (bottom type), то есть он является подтипом любого другого типа. Это позволяет использовать функцию, возвращающую Never, в местах, где ожидается любой другой тип.