exit 函数

Never exit(
  1. int code
)

立即使用给定的退出码退出 Dart 虚拟机进程。

这不会等待任何异步操作终止或执行 finally 块。因此,使用 exit 很可能会丢失数据。

在调试过程中,如果调用 exit,虚拟机不会尊重 --pause-isolates-on-exit 标志,因为这会立即关闭 Dart 虚拟机进程。要正确在退出时中断,考虑在 debuggerdart:developerIsolate.pausedart:isolateIsolate.current 调用 exit 之前暂停隔离。

退出码的处理是平台特定的。

在 Linux 和 OS X 上,正常退出的退出码始终在范围 [0..255] 内。如果设置的范围外的退出码,则实际退出码将是低 8 位的掩码并作为无符号值处理。例如,使用退出码 -1 将导致报告的实际退出码为 255。

在 Windows 上,可以将退出码设置为任何 32 位值。然而,其中一些值保留用于报告系统错误,如崩溃。

除了这个之外,Dart 可执行文件自身使用退出码 254 报告编译时错误,并使用退出码 255 报告运行时错误(未处理的异常)。

鉴于这些事实,建议仅使用范围为 [0..127] 的退出码将 Dart 程序的运行结果传达给周围环境。这将避免任何跨平台问题。

实现

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);
}