gpt4 book ai didi

dart - 在调用之前检测ReceivePort是否具有处理程序

转载 作者:行者123 更新时间:2023-12-03 03:29:31 26 4
gpt4 key购买 nike

我已经使用spawnFunction创建了一个隔离,并提供了一个错误处理程序,并将发送包装在try / catch中。

如果我尝试发送到replyTo并且它没有注册接收,那么(正确地)它会抛出方法未找到异常,但是我不知道如何捕获和处理它。

如果取消注释recPort行,则一切正常。

echoIsolate() {
port.receive((message, replyTo) {
replyTo.send(message, port.toSendPort());
});
}

bool errorHandler(IsolateUnhandledException ex) {
print('Got error');
return true;
}

run_tests() {
test('bad rec', () {
try {
var recPort = new ReceivePort();
//recPort.receive((message, replyTo) => print('Got echo: ${message}'));

var isolatePort = spawnFunction(echoIsolate, errorHandler);

isolatePort.send('message', recPort.toSendPort());
} catch(ex) {
print('Got exception');
}
});
}

最佳答案

目前(截至2013年4月),没有任何方法可以处理此错误。 (据我所知)

有两项改进可以解决该问题:1)一种设置全局异常处理程序的方法,或2)异步try / catch。

如果代码在隔离环境中运行,则可以使用全局异常处理程序。可以将异常处理程序作为参数传递给spawnFunction。我们将改进隔离株的API,但目前这是捕获未捕获异常的唯一方法。

我们正在考虑异步try / catch,但到目前为止,它不仅仅只是想法。

编辑:还有一个问题,这是否应该甚至抛出,缓冲或只是丢弃接收到的值。

关于dart - 在调用之前检测ReceivePort是否具有处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com