Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Side by Side Diff: runtime/tests/vm/dart/isolate_unhandled_exception_test2.dart

Issue 11558034: Second version of support for specifying an unhandled exception callback (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 import 'dart:isolate';
siva 2012/12/13 18:30:38 ditto.
2 import 'dart:io';
3
4 // Tests that an isolate's keeps message handling working after
5 // throwing an unhandled exception, if it was created with an
siva 2012/12/13 18:30:38 instead of created with an unhandled exception it
6 // unhandled exception callback that returns true (continue handling).
7 // This test verifies that a default-named callback function is called
8 // when no callback is specified in Isolate.spawnFunction.
9
10 // Note: this test will hang if an uncaught exception isn't handled,
11 // either by an error in the callback or it returning false.
12
13 void entry() {
14 port.receive((message, replyTo) {
15 if (message == 'throw exception') {
16 throw new RuntimeError('ignore this exception');
17 }
18 replyTo.call('hello');
19 port.close();
20 });
21 }
22
23 bool _unhandledExceptionCallback(IsolateUnhandledException e) {
24 return e.source.message == 'ignore this exception';
25 }
26
27 void main() {
28 var isolate_port = spawnFunction(entry);
29
30 // Send a message that will cause an ignorable exception to be thrown.
31 Future f = isolate_port.call('throw exception');
32 f.onComplete((future) {
33 // Exception wasn't ignored as it was supposed to be.
34 print('failed handling exception');
35 exit(1);
36 });
37
38 // Verify that isolate can still handle messages.
39 isolate_port.call('hi').onComplete((future) {
40 if (future.exception != null) {
41 print('unhandled exception: ${future.exception}');
42 exit(1);
43 }
44 if (future.value != 'hello') {
45 print('unexpected response: ${future.value}');
46 exit(1);
47 }
48 exit(0);
49 });
50 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698