如何在Dart中获取当前堆栈跟踪以用于Completer.CompleteException(exception, stackTrace);

96
如果一些代码返回一个 future 并确定该 future 应返回“错误”或“异常”,那么如何将堆栈跟踪传递给 Completer.completeException(exception, stackTrace);
2个回答

194

如果我理解正确:当在dart中捕获异常时,您也可以捕获堆栈跟踪:

try {
  // something
} catch(e, stacktrace) {
  myCompleter.completeException(e, stacktrace);
}

2
此外,如果您没有当前的异常,请在try块中抛出一个异常并自行捕获。 - Justin Fagnani
1
嘿,Adam,那听起来是个相当不错的答案。你可能需要勾选它的绿色复选标记 :) - Shannon -jj Behrens
2
John的答案是正确的,但我想要的答案是Justin的。 - adam-singer
1
@JustinFagnani为什么不单独回答一下呢,因为它更接近Adam的需求。 :) - John Evans
我们从哪里获取myCompleter - Oliver Dixon

180

16
如果您需要从任意位置获取堆栈跟踪信息,这是很有用的,但如果您在catch块中,选择的答案更好,因为Dart已经为您提供了一个StackTrace - Abion47

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接