作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用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/
我是一名优秀的程序员,十分优秀!