diff --git a/native_mate/arguments.cc b/native_mate/arguments.cc index 70351479a0..fcb34db76c 100644 --- a/native_mate/arguments.cc +++ b/native_mate/arguments.cc @@ -32,17 +32,25 @@ v8::Handle Arguments::PeekNext() const { return (*info_)[next_]; } -void Arguments::ThrowError() const { +v8::Handle Arguments::ThrowError() const { if (insufficient_arguments_) return ThrowTypeError("Insufficient number of arguments."); - ThrowTypeError(base::StringPrintf( + return ThrowTypeError(base::StringPrintf( "Error processing argument %d.", next_ - 1)); } -void Arguments::ThrowTypeError(const std::string& message) const { +v8::Handle Arguments::ThrowError(const std::string& message) const { + MATE_THROW_EXCEPTION(isolate_, v8::Exception::Error( + StringToV8(isolate_, message))); + return MATE_UNDEFINED(isolate_); +} + +v8::Handle Arguments::ThrowTypeError( + const std::string& message) const { MATE_THROW_EXCEPTION(isolate_, v8::Exception::TypeError( StringToV8(isolate_, message))); + return MATE_UNDEFINED(isolate_); } } // namespace mate diff --git a/native_mate/arguments.h b/native_mate/arguments.h index 7975a156c2..cee1477b67 100644 --- a/native_mate/arguments.h +++ b/native_mate/arguments.h @@ -73,8 +73,9 @@ class Arguments { v8::Handle PeekNext() const; - void ThrowError() const; - void ThrowTypeError(const std::string& message) const; + v8::Handle ThrowError() const; + v8::Handle ThrowError(const std::string& message) const; + v8::Handle ThrowTypeError(const std::string& message) const; v8::Isolate* isolate() const { return isolate_; }