Index: tests/isolate/non_fatal_exception_in_timer_callback_test.dart |
diff --git a/tests/isolate/non_fatal_exception_in_timer_callback_test.dart b/tests/isolate/non_fatal_exception_in_timer_callback_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4568afe635587e2e9a12b20327ef6ed1686bc7db |
--- /dev/null |
+++ b/tests/isolate/non_fatal_exception_in_timer_callback_test.dart |
@@ -0,0 +1,27 @@ |
+// Copyright (c) 2017, 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. |
+ |
+import 'dart:async'; |
+import 'dart:isolate'; |
+import 'dart:io'; |
+ |
+main() async { |
+ Isolate.current.setErrorsFatal(false); |
+ |
+ new Timer(const Duration(milliseconds: 10), () { |
+ print("Timer 1"); |
+ |
+ // This unhandled exception should not prevent the second timer from firing. |
+ throw "Oh no!"; |
+ }); |
+ |
+ new Timer.periodic(const Duration(milliseconds: 20), (_) { |
+ print("Timer 2"); |
+ exit(0); |
+ }); |
+ |
+ sleep(const Duration(milliseconds: 30)); //# sleep: ok |
+ // With sleep: both timers are due at the same wakeup event. |
+ // Without sleep: the timers get separate wakeup events. |
+} |