ネイティブ NodeJS (0.11.5) 拡張機能でカスタム例外を作成したいと考えています。Error
V8 (3.20.11) でビルトイン クラスのサブクラスを作成しようとしています。
基本的に、次の Javascript コードに相当する C++ を探しています。
function MyError(message) {
Error.apply(this, arguments);
this.message = message;
}
MyError.prototype = new Error;
MyError.prototype.name = MyError.name;
new MyError("message")
V8 のソースを掘り下げてみたところ、次のようなヘルパー メソッドが見つかりました。
Handle<Object> Factory::NewError(const char* constructor,
Handle<String> message)
残念ながら、それはプライベート API のように見えます。V8 について十分に理解していないため、同様のものを自分で構築する方法を理解できません。ビルトイン インスタンスを作成するのと同様の方法で使用できるメソッドを記述できれば、すばらしいことError
です。たとえば、次のようになります。
ThrowException(v8::Exception::Error(v8::String::New(msg)))
// becomes...
ThrowException(MyError(v8::String::New(msg)))
組み込みクラスのサブクラスにできるだけ近いソリューションを探していError
ます。おそらく次の条件を満たす必要があります。
var e = new MyError("message");
assert(e instanceof MyError);
assert(e instanceof Error);
assert(e.name === "MyError");
assert(e.message === "message");
どこから始めればよいですか?