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

ada*_*ger 12 dart dart-async

如果某些代码返回一个future并确定future将返回"Error"或"Exception",那么如何将堆栈跟踪传递给它 Completer.completeException(exception, stackTrace);

Joh*_*ans 22

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

try {
  // something
} catch(e, stacktrace) {
  myCompleter.completeException(e, stacktrace);
}
Run Code Online (Sandbox Code Playgroud)

  • 除此之外,如果当前没有异常,只需在 try 块中抛出一个异常并自己捕获它即可。 (2认同)
  • 嘿,亚当,这听起来是一个很好的答案。您可能想将其标记为绿色:) (2认同)
  • 约翰的答案是正确的,我正在寻找的答案是贾斯汀的。 (2认同)

cam*_*ous 19

您可以使用 StackTrace.current

  • 如果您需要从任意位置获取堆栈跟踪,这很有用,但如果您在`catch`块中,所选答案会更好,因为Dart已经为您提供了"StackTrace". (2认同)