exit 函数
- int code
立即使用给定的退出码退出 Dart 虚拟机进程。
这不会等待任何异步操作终止或执行 finally
块。因此,使用 exit 很可能会丢失数据。
在调试过程中,如果调用 exit,虚拟机不会尊重 --pause-isolates-on-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
报告运行时错误(未处理的异常)。
鉴于这些事实,建议仅使用范围为 [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);
}