,则 API 方法可能会失败,因为抛出了异常,或-6ren">
gpt4 book ai didi

node.js - "an empty MaybeLocal"是什么意思?

转载 作者:搜寻专家 更新时间:2023-10-31 23:36:57 25 4
gpt4 key购买 nike

我开始使用 Nan 使用 nodejs 插件,并且正在阅读有关 MaybeLocal 的信息。

文档说“如果 API 方法返回 MaybeLocal<>,则 API 方法可能会失败,因为抛出了异常,或者因为异常正在等待处理,例如,因为先前的 API 调用抛出了一个尚未发生的异常尚未被捕获,或者因为抛出了 TerminateExecution 异常。在这种情况下,将返回一个空的 MaybeLocal。”

这是否大致相当于返回一个空指针,但使用一个可以检测到它的简单类?

最佳答案

(这里是 V8 开发人员。)是的,“空的 MaybeLocal”本质上是一个指针,可以是 nullptr 并强制代码检查这种情况。

背景是,由于 JavaScript 的性质,许多 V8 的 API 操作可能(有点出乎意料)失败:任何时候执行任何 JavaScript,该 JavaScript 代码都可能抛出异常。甚至读取对象属性也可以调用 getter。我们从经验中了解到,编写正确检查所有这些的客户端代码非常困难,因此现在 V8 的 API 主要基于 MaybeLocal 来帮助您找到所有需要 的地方nullptr 检查——或 .IsEmpty() 检查,因为它们在 MaybeLocal 世界中被调用。

在可以保证MaybeLocal不能为空的情况下,可以使用.ToLocalChecked(),如果MaybeLocal会崩溃> 是空的。否则,常见的模式是:

Local<Value> value;
if (maybe_value.ToLocal(&value)) {
// Do stuff with {value}.
} else {
// Handle error. If you have a TryCatch, it should
// have caught an exception.
}

关于node.js - "an empty MaybeLocal"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com