0

我正在尝试在我的 Dart webapp 中使用 Isolates,但我似乎无法使错误回调参数起作用。我有一个在 Dartium 中运行的非常基本的代码。

import "dart:isolate";

void main() {
  print("Main.");
  spawnFunction(test, (IsolateUnhandledException e) {
    print(e);
  });
}

void test() {
  throw "Ooops.";
}

除了“主要”之外,我从未见过任何东西。打印在控制台上。我做错了什么还是现在坏了?

4

1 回答 1

2

错误回调将在新的隔离中执行。因此它不能是动态闭包,而需要是静态函数。

我还没有测试过,但这应该可以工作:

import "dart:isolate";

bool errorHandler(IsolateUnhandledException e) {
  print(e);
  return true;
}

void test() {
  throw "Ooops.";
}

void main() {
  // Make sure the program doesn't terminate immediately by keeping a
  // ReceivePort open. It will never stop now, but at least you should
  // see the error in the other isolate now.
  var port = new ReceivePort();
  print("Main.");
  spawnFunction(test, errorHandler);
}

注意:在 dart2js 中这个特性还没有实现。旧版本只是忽略了这个论点。较新的版本将抛出 UnimplementedError。

于 2013-03-23T18:58:17.517 回答