"an empty MaybeLocal" 是什么意思?
what does "an empty MaybeLocal" mean?
我开始使用 Nan 使用 nodejs 插件,并且正在阅读有关 MaybeLocal 的信息。
文档说 "If an API method returns a MaybeLocal<>, the API method can potentially fail either because an exception is thrown, or because an exception is pending, e.g. because a previous API call threw an exception that hasn't been caught yet, or because a TerminateExecution exception was thrown. In that case, an empty MaybeLocal is returned."
这是否大致相当于返回一个空指针,但使用一个简单的 class 可以检测到它?
(这里是 V8 开发人员。)是的,"empty 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.
}
我开始使用 Nan 使用 nodejs 插件,并且正在阅读有关 MaybeLocal 的信息。
文档说 "If an API method returns a MaybeLocal<>, the API method can potentially fail either because an exception is thrown, or because an exception is pending, e.g. because a previous API call threw an exception that hasn't been caught yet, or because a TerminateExecution exception was thrown. In that case, an empty MaybeLocal is returned."
这是否大致相当于返回一个空指针,但使用一个简单的 class 可以检测到它?
(这里是 V8 开发人员。)是的,"empty 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.
}