(ここではV8デベロッパー)はい、「空のMaybeLocal」は本質的にnullptr
の可能性のあるポインタであり、コードでそのケースを確認するように強制します。
バックグラウンドは、JavaScriptの性質上、V8のAPI操作の多くが(幾分予期せず)失敗する可能性があります。JavaScriptが実行されるたびに、そのJavaScriptコードが例外をスローする可能性があります。オブジェクトプロパティを読み込んでもゲッターが呼び出される可能性があります。 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.
}
です。私はそれが取得するのが最も難しいことを知っています。読めるコードはたくさんありますが、「これがなぜこのように行われたのか」はあまりありません。 – bmacnaughton