我使用 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');
}
});
}