2

nodejs C++ モジュールがあり、初期化エラーを報告する方法を知りたいです。したがって、定型文は次のとおりです。

extern "C" void Initialize(v8::Handle<v8::Object> instance)
{
    // Do initialization stuff
}

NODE_MODULE(SomeModuleType, Initialize)

Initialize戻り値の型がなく、それが であるためスローが許可されていない場合、内部でエラーを報告するにはどうすればよいextern "C"ですか? 呼び出す必要がある特定のコールバックはありますか?

また、nodejs に公開されているコールバック メソッドからエラーを報告するベスト プラクティスは何ですか? nullオブジェクトを返すのは一般的な方法ですか、それともそこにスローできますか?それはjavascript側で例外として表示されますか?

4

1 に答える 1

1

nodejs ソースに潜んでいた後、私はこれに行き着きましたが、これが良いアプローチであるかどうかについてのコメントはまだ歓迎されています:

extern "C" void Initialize(v8::Handle<v8::Object> instance)
{
    try
    {
        // Do something unsafe
    }
    catch (std::exception& Exception)
    {
        node::Environment::GetCurrent(v8::Isolate::GetCurrent())->ThrowError("module initialization failed");
    }
}

単に例外を再スローすると、デバッガーの下で実行が続行されますが、これは私が望んでいるものではありません。

于 2016-04-03T12:39:05.950 に答える