本文整理汇总了C++中Local::GetScriptResourceName方法的典型用法代码示例。如果您正苦于以下问题:C++ Local::GetScriptResourceName方法的具体用法?C++ Local::GetScriptResourceName怎么用?C++ Local::GetScriptResourceName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Local
的用法示例。
在下文中一共展示了Local::GetScriptResourceName方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scope
static void logV8Exception(Local<Message> msg, Local<Value> data)
{
HandleScope scope(V8Runtime::v8_isolate);
// Log reason and location of the error.
LOGD(TAG, *v8::String::Utf8Value(msg->Get()));
LOGD(TAG, "%s @ %d >>> %s",
*v8::String::Utf8Value(msg->GetScriptResourceName()),
msg->GetLineNumber(),
*v8::String::Utf8Value(msg->GetSourceLine()));
}
示例2: jserror
jsvalue JsEngine::ErrorFromV8(TryCatch& trycatch)
{
jsvalue v;
HandleScope scope;
Local<Value> exception = trycatch.Exception();
v.type = JSVALUE_TYPE_UNKNOWN_ERROR;
v.value.str = 0;
v.length = 0;
// If this is a managed exception we need to place its ID inside the jsvalue
// and set the type JSVALUE_TYPE_MANAGED_ERROR to make sure the CLR side will
// throw on it.
if (exception->IsObject()) {
Local<Object> obj = Local<Object>::Cast(exception);
if (obj->InternalFieldCount() == 1) {
Local<External> wrap = Local<External>::Cast(obj->GetInternalField(0));
ManagedRef* ref = (ManagedRef*)wrap->Value();
v.type = JSVALUE_TYPE_MANAGED_ERROR;
v.length = ref->Id();
return v;
}
}
jserror *error = new jserror();
memset(error, 0, sizeof(jserror));
Local<Message> message = trycatch.Message();
if (!message.IsEmpty()) {
error->line = message->GetLineNumber();
error->column = message->GetStartColumn();
error->resource = AnyFromV8(message->GetScriptResourceName());
error->message = AnyFromV8(message->Get());
}
if (exception->IsObject()) {
Local<Object> obj2 = Local<Object>::Cast(exception);
error->type = AnyFromV8(obj2->GetConstructorName());
}
error->exception = AnyFromV8(exception);
v.type = JSVALUE_TYPE_ERROR;
v.value.ptr = error;
return v;
}
示例3: handle_scope
/**
* 吉里吉里に対して例外通知
*/
void
JSEXCEPTION(Isolate* isolate, TryCatch *try_catch)
{
HandleScope handle_scope(isolate);
//HandleScope handle_scope;
String::Value exception(try_catch->Exception());
Local<Message> message = try_catch->Message();
if (!message.IsEmpty()) {
// 例外表示
String::Value filename(message->GetScriptResourceName());
ttstr msg;
msg += *filename;
msg += ":";
msg += tTJSVariant(message->GetLineNumber());
msg += ":";
msg += *exception;
TVPAddLog(msg);
// Print (filename):(line number): (message).
String::Value sourceline(message->GetSourceLine());
TVPAddLog(ttstr(*sourceline));
// エラー行表示
ttstr wavy;
int start = message->GetStartColumn();
for (int i = 0; i < start; i++) {
wavy += " ";
}
int end = message->GetEndColumn();
for (int i = start; i < end; i++) {
wavy +="^";
}
TVPAddLog(wavy);
// スタックトレース表示
String::Value stack_trace(try_catch->StackTrace());
if (stack_trace.length() > 0) {
TVPAddLog(ttstr(*stack_trace));
}
}
TVPThrowExceptionMessage(*exception);
}
示例4: handleException
void handleException(TryCatch& tc)
{
Logging::log(Logging::ERROR, "V8 exception:\r\n");
HandleScope handleScope;
Handle<Object> exception = tc.Exception()->ToObject();
String::AsciiValue exception_str(exception);
Logging::log(Logging::ERROR, " : %s\r\n", *exception_str);
/*
Handle<Array> names = exception->GetPropertyNames();
for (unsigned int i = 0; i < names->Length(); i++)
{
std::string strI = Utility::toString((int)i);
Logging::log(Logging::ERROR, " %d : %s : %s\r\n", i,
*(v8::String::Utf8Value(names->Get(String::New(strI.c_str()))->ToString())),
*(v8::String::Utf8Value(exception->Get(names->Get(String::New(strI.c_str()))->ToString())->ToString()))
);
}
*/
Local<Message> message = tc.Message();
Logging::log(Logging::ERROR, "Message: Get: %s\r\n", *(v8::String::Utf8Value( message->Get() )));
Logging::log(Logging::ERROR, "Message: GetSourceLine: %s\r\n", *(v8::String::Utf8Value( message->GetSourceLine() )));
Logging::log(Logging::ERROR, "Message: GetScriptResourceName: %s\r\n", *(v8::String::Utf8Value( message->GetScriptResourceName()->ToString() )));
Logging::log(Logging::ERROR, "Message: GetLineNumber: %d\r\n", message->GetLineNumber() );
Local<Value> stackTrace = tc.StackTrace();
if (!stackTrace.IsEmpty())
{
Logging::log(Logging::ERROR, "Stack trace: %s\r\n", *(v8::String::Utf8Value( stackTrace->ToString() )));
printf("\r\n\r\n^Stack trace^: %s\r\n", *(v8::String::Utf8Value( stackTrace->ToString() )));
}
else
Logging::log(Logging::ERROR, "No stack trace available in C++ handler (see above for possible in-script stack trace)\r\n");
#ifdef SERVER
std::string clientMessage = *(v8::String::Utf8Value( message->Get() ));
clientMessage += " - ";
clientMessage += *(v8::String::Utf8Value( message->GetSourceLine() ));
ServerSystem::fatalMessageToClients(clientMessage);
#endif
// assert(0);
throw ScriptException("Bad!");
}