exit 函数
- int code
使用指定的退出码立即退出 Dart VM 进程。
这不会等待任何异步操作完成,也不会执行 finally
块。因此,使用 exit 很可能会丢失数据。
子进程不会被明确终止(但它们可能会在检测到父进程已退出时自行终止)。
在调试过程中,如果调用 exit,VM 将不会尊重 --pause-isolates-on-exit
标志,因为调用此方法会导致 Dart VM 进程立即关闭。要正确地在退出时中断,请考虑在调用 exit 之前从 dart:developer
调用 debugger 或从 dart:isolate
调用 Isolate.pause 从 Isolate.current 来暂停 isolate。
退出码的处理是平台特定的。
在 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);
}