// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library;

import 'dart:async' show Future;

import 'dart:io' show exitCode, stderr;

import 'dart:isolate' show ReceivePort;

import 'log.dart';

Future<T?> withErrorHandling<T>(
  Future<T> Function() f, {
  Logger? logger,
}) async {
  final ReceivePort port = ReceivePort();
  try {
    return await f();
  } catch (e, trace) {
    exitCode = 1;
    stderr.writeln(e);
    stderr.writeln(trace);
    logger?.noticeFrameworkCatchError(e, trace);
    return null;
  } finally {
    port.close();
  }
}
