Skip to content

Commit 132cb0d

Browse files
committed
Catch and redirect exception in SaneIsolate to main isolate
Fixes #17
1 parent 98643a9 commit 132cb0d

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import 'package:sane/src/exceptions.dart';
2+
import 'package:sane/src/isolate_messages/interface.dart';
3+
4+
class ExceptionResponse implements IsolateResponse {
5+
ExceptionResponse({required this.exception});
6+
7+
final SaneException exception;
8+
}

packages/sane/lib/src/sane_isolate.dart

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:sane/src/isolate_messages/cancel.dart';
66
import 'package:sane/src/isolate_messages/close.dart';
77
import 'package:sane/src/isolate_messages/control_button_option.dart';
88
import 'package:sane/src/isolate_messages/control_option.dart';
9+
import 'package:sane/src/isolate_messages/exception.dart';
910
import 'package:sane/src/isolate_messages/exit.dart';
1011
import 'package:sane/src/isolate_messages/get_all_option_descriptors.dart';
1112
import 'package:sane/src/isolate_messages/get_devices.dart';
@@ -57,6 +58,10 @@ class SaneIsolate implements Sane {
5758
final response = await replyPort.first;
5859
replyPort.close();
5960

61+
if (response is ExceptionResponse) {
62+
throw response.exception;
63+
}
64+
6065
return response;
6166
}
6267

@@ -300,9 +305,14 @@ void _isolateEntryPoint(_IsolateEntryPointArgs args) {
300305
isolateReceivePort.listen((envellope) async {
301306
envellope = envellope as _IsolateMessageEnveloppe;
302307

303-
envellope.replyPort.send(
304-
await envellope.message.handle(sane),
305-
);
308+
late IsolateResponse response;
309+
try {
310+
response = await envellope.message.handle(sane);
311+
} on SaneException catch (e) {
312+
response = ExceptionResponse(exception: e);
313+
}
314+
315+
envellope.replyPort.send(response);
306316
});
307317
}
308318

0 commit comments

Comments
 (0)