Files
sdk/tests/isolate/global_error_handler_stream_test.dart
T
johnniwinther@google.com 991c9a14f5 Fix uses of throw/rethrow.
BUG=

Review URL: https://codereview.chromium.org//22557002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25863 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-07 08:55:30 +00:00

48 lines
1.2 KiB
Dart

// Copyright (c) 2013, 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 test;
import 'dart:async';
import 'dart:isolate';
var firstFunction;
var finishFunction;
void runFunctions() {
try {
firstFunction();
} catch (e) {
new Timer(Duration.ZERO, finishFunction);
rethrow;
}
}
void startTest(EventSink finishSink) {
firstFunction = () { throw new UnsupportedError("ignore exception"); };
finishFunction = () { finishSink.add("done"); finishSink.close(); };
new Timer(Duration.ZERO, runFunctions);
}
runTest() {
stream.single.then(startTest);
}
bool globalErrorHandler(IsolateUnhandledException e) {
return e.source is UnsupportedError && e.source.message == "ignore exception";
}
main() {
var box = new MessageBox();
var timer;
EventSink otherIsolate = streamSpawnFunction(runTest, globalErrorHandler);
otherIsolate.add(box.sink);
otherIsolate.close();
box.stream.single.then((msg) {
box.stream.close();
timer.cancel();
});
timer = new Timer(const Duration(seconds: 2), () { throw "failed"; });
}