26 #if defined(USING_JSC) 27 ReturnVal<JsValue> CreateError(
const std::string&
message,
28 const std::string&
type) {
30 JSValueRef ctor =
GetMemberRaw(JSContextGetGlobalObject(cx), type);
32 JSValueRef args[] = {JSValueMakeString(
GetContext(), str)};
33 return JSObjectCallAsConstructor(cx, UnsafeJsCast<JsObject>(ctor), 1, args,
38 void FillStack(RefPtr<dom::DOMException> except) {
41 stack.insert(0,
"\n");
42 except->stack = except->error_name +
": " + except->message + stack;
49 v8::Local<v8::String> empty = v8::String::Empty(
GetIsolate());
50 v8::Local<v8::Value> except = v8::Exception::Error(empty);
51 CHECK(!except.IsEmpty());
52 DCHECK(except->IsObject());
54 const std::string ret =
57 const auto pos = ret.find(
'\n');
58 return ret.substr(pos == std::string::npos ? ret.size() : pos + 1);
59 #elif defined(USING_JSC) 68 #elif defined(USING_JSC) 69 return JsError(CreateError(message,
"RangeError"));
76 #elif defined(USING_JSC) 77 return JsError(CreateError(message,
"ReferenceError"));
84 #elif defined(USING_JSC) 85 return JsError(CreateError(message,
"TypeError"));
92 #elif defined(USING_JSC) 93 return JsError(CreateError(message,
"SyntaxError"));
100 #elif defined(USING_JSC) 101 return JsError(CreateError(message,
"Error"));
111 return JsError(trycatch.Exception());
121 return JsError(except->JsThis());
127 return JsError(except->JsThis());
static JsError Error(const std::string &message)
static JsError Rethrow(Handle< JsValue > error)
static std::string GetJsStack()
static JsError SyntaxError(const std::string &message)
ReturnVal< JsValue > error() const
std::string ConvertToString(Handle< JsValue > value)
static JsError TypeError(const std::string &message)
static JsError DOMException(ExceptionCode code)
JSContextRef GetContext()
static JsError RangeError(const std::string &message)
ReturnVal< JsString > JsStringFromUtf8(const std::string &str)
v8::Isolate * GetIsolate()
ReturnVal< JsValue > GetMemberRaw(Handle< JsObject > object, const std::string &name, LocalVar< JsValue > *exception=nullptr)
static JsError ReferenceError(const std::string &message)