функция exit
- int code
Немедленно завершает процесс виртуальной машины Dart с указанным кодом выхода.
При этом метод не дожидается завершения асинхронных операций и не выполняет блоки finally. Поэтому использование exit с большой вероятностью приведёт к потере данных.
При отладке виртуальная машина не учитывает флаг --pause-isolates-on-exit, если вызывается exit, поскольку вызов этого метода приводит к немедленному завершению процесса виртуальной машины Dart. Чтобы правильно остановиться при выходе, вызовите debugger из dart:developer или Isolate.pause из dart:isolate для Isolate.current, чтобы приостановить изолят до вызова exit.
Обработка кодов выхода зависит от платформы.
В Linux и OS X код выхода при нормальном завершении всегда находится в диапазоне [0..255]. Если задан код выхода вне этого диапазона, фактическим кодом выхода будут младшие 8 бит, интерпретируемые как беззнаковое значение. Например, код выхода -1 приведёт к тому, что фактический код выхода будет равен 255.
В Windows код выхода может иметь любое 32-битное значение. Однако некоторые из этих значений зарезервированы для сообщений о системных ошибках, например сбоях.
Кроме того, исполняемый файл Dart использует код выхода 254 для сообщения об ошибках компиляции и код выхода 255 для сообщения об ошибке во время выполнения (необработанном исключении).
В связи с этим для передачи результата выполнения программы Dart окружающей среде рекомендуется использовать только коды выхода в диапазоне [0..127]. Это позволит избежать проблем совместимости между платформами.
Реализация
Never exit(int code) {
ArgumentError.checkNotNull(code, "code");
if (!_EmbedderConfig._mayExit) {
throw new UnsupportedError(
"This embedder disallows calling dart:io's exit()");
}
_ProcessUtils._exit(code);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/exit.html