blob: 581fc3f333cdace30003501989380f6da49065fd [file] [log] [blame]
// Copyright (c) 2023, 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.
// Regression: https://github.com/dart-lang/sdk/issues/37953
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
Future<void> throwAsync() async {
await Future.delayed(const Duration(milliseconds: 10));
throw 'Throw from throwAsync!';
}
Future<void> nestedThrowAsync() async {
await Future.delayed(const Duration(milliseconds: 10));
await throwAsync();
}
Future<void> testeeMain() async {
await throwAsync().then((v) {
print('Hello from then()!');
}).catchError((e, st) {
print('Caught in catchError: $e!');
});
// Make sure we can chain through off-stack awaiters as well.
try {
await nestedThrowAsync();
} catch (e) {
print('Caught in catch: $e!');
}
}
final tests = <IsolateTest>[
// We shouldn't get any debugger breaks before exit as all exceptions are
// caught (via `Future.catchError()`).
hasStoppedAtExit,
];
void main([args = const <String>[]]) => runIsolateTests(
args,
tests,
'pause_on_unhandled_exceptions_catcherror_test.dart',
pauseOnUnhandledExceptions: true,
pauseOnExit: true,
testeeConcurrent: testeeMain,
);