@@ -6,6 +6,7 @@ import 'package:sane/src/isolate_messages/cancel.dart';
66import 'package:sane/src/isolate_messages/close.dart' ;
77import 'package:sane/src/isolate_messages/control_button_option.dart' ;
88import 'package:sane/src/isolate_messages/control_option.dart' ;
9+ import 'package:sane/src/isolate_messages/exception.dart' ;
910import 'package:sane/src/isolate_messages/exit.dart' ;
1011import 'package:sane/src/isolate_messages/get_all_option_descriptors.dart' ;
1112import '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