description

# exit function

Never exit(

1. int code

)

Exit the Dart VM process immediately with the given exit code.

This does not wait for any asynchronous operations to terminate nor execute `finally` blocks. Using exit is therefore very likely to lose data.

Child processes are not explicitly terminated (but they may terminate themselves when they detect that their parent has exited).

While debugging, the VM will not respect the `--pause-isolates-on-exit` flag if exit is called as invoking this method causes the Dart VM process to shutdown immediately. To properly break on exit, consider calling debugger from `dart:developer` or Isolate.pause from `dart:isolate` on Isolate.current to pause the isolate before invoking exit.

The handling of exit codes is platform specific.

On Linux and OS X an exit code for normal termination will always be in the range `[0..255]`. If an exit code outside this range is set the actual exit code will be the lower 8 bits masked off and treated as an unsigned value. E.g. using an exit code of -1 will result in an actual exit code of 255 being reported.

On Windows the exit code can be set to any 32-bit value. However some of these values are reserved for reporting system errors like crashes.

Besides this the Dart executable itself uses an exit code of `254` for reporting compile time errors and an exit code of `255` for reporting runtime error (unhandled exception).

Due to these facts it is recommended to only use exit codes in the range [0..127] for communicating the result of running a Dart program to the surrounding environment. This will avoid any cross-platform issues.

## Implementation

    Never exit(int code) {
      IOOverrides? overrides = IOOverrides.current;
      if (overrides == null) {
        if (!_EmbedderConfig._mayExit) {
          throw new UnsupportedError(
            "This embedder disallows calling dart:io's exit()",
          );
        }
        _ProcessUtils._exit(code);
      }
      overrides.exit(code);
    }