我应该如何使用Dart Isolate unhandledExceptionCallback?

时间:2013-03-23 12:51:52

标签: dart dart-isolates

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

import "dart:isolate";

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

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

我从未见过“主要”的东西。打印在控制台上。我做错了什么或者现在这样做了吗?

1 个答案:

答案 0 :(得分: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。