History

Fix script error logging

ksuprynowicz committed 3 years ago

Commit 8dc776a1 parent 3164e715 files · +44 −14Browse files

Showing the changes to libraries/script-engine/src/v8/ScriptEngineV8.cpp (1 of 5 files). Show all

Unified · Split

libraries/script-engine/src/v8/ScriptEngineV8.cpp+22−7
@@ -634,9 +634,13 @@ ScriptValue ScriptEngineV8::evaluateInClosure(const ScriptValue& _closure, · 633 unmodified lines
634 v8::Local<v8::Value> v8Result;634 v8::Local<v8::Value> v8Result;
635 if (!maybeResult.ToLocal(&v8Result)) {635 if (!maybeResult.ToLocal(&v8Result)) {
636 v8::String::Utf8Value utf8Value(getIsolate(), tryCatch.Exception());636 v8::String::Utf8Value utf8Value(getIsolate(), tryCatch.Exception());
637 QString errorMessage = QString(*utf8Value);637 QString errorMessage = QString(__FUNCTION__) + " hasCaught:" + QString(*utf8Value) + "\n"
638 qCWarning(scriptengine_v8) << __FUNCTION__ << "---------- hasCaught:" << errorMessage;638 + "tryCatch details:" + formatErrorMessageFromTryCatch(tryCatch);
639 qCWarning(scriptengine_v8) << __FUNCTION__ << "---------- tryCatch details:" << formatErrorMessageFromTryCatch(tryCatch);639 if (_manager) {
640 _manager->scriptErrorMessage(errorMessage);
641 } else {
642 qWarning(scriptengine_v8) << errorMessage;
643 }
640 }644 }
641 645
642 if (hasUncaughtException()) {646 if (hasUncaughtException()) {
@@ -685,6 +689,12 @@ ScriptValue ScriptEngineV8::evaluate(const QString& sourceCode, const QString& f · 42 unmodified lines
685 {689 {
686 v8::TryCatch tryCatch(getIsolate());690 v8::TryCatch tryCatch(getIsolate());
687 if (!v8::Script::Compile(getContext(), v8::String::NewFromUtf8(getIsolate(), sourceCode.toStdString().c_str()).ToLocalChecked(), &scriptOrigin).ToLocal(&script)) {691 if (!v8::Script::Compile(getContext(), v8::String::NewFromUtf8(getIsolate(), sourceCode.toStdString().c_str()).ToLocalChecked(), &scriptOrigin).ToLocal(&script)) {
692 QString errorMessage(QString("Error while compiling script: \"") + fileName + QString("\" ") + formatErrorMessageFromTryCatch(tryCatch));
693 if (_manager) {
694 _manager->scriptErrorMessage(errorMessage);
695 } else {
696 qDebug(scriptengine_v8) << errorMessage;
697 }
688 setUncaughtException(tryCatch, "Error while compiling script");698 setUncaughtException(tryCatch, "Error while compiling script");
689 _evaluatingCounter--;699 _evaluatingCounter--;
690 return nullValue();700 return nullValue();
@@ -697,7 +707,12 @@ ScriptValue ScriptEngineV8::evaluate(const QString& sourceCode, const QString& f · 6 unmodified lines
697 Q_ASSERT(tryCatchRun.HasCaught());707 Q_ASSERT(tryCatchRun.HasCaught());
698 auto runError = tryCatchRun.Message();708 auto runError = tryCatchRun.Message();
699 ScriptValue errorValue(new ScriptValueV8Wrapper(this, V8ScriptValue(this, runError->Get())));709 ScriptValue errorValue(new ScriptValueV8Wrapper(this, V8ScriptValue(this, runError->Get())));
700 qCDebug(scriptengine_v8) << "Running script: \"" << fileName << "\" " << formatErrorMessageFromTryCatch(tryCatchRun);710 QString errorMessage(QString("Running script: \"") + fileName + QString("\" ") + formatErrorMessageFromTryCatch(tryCatchRun));
711 if (_manager) {
712 _manager->scriptErrorMessage(errorMessage);
713 } else {
714 qDebug(scriptengine_v8) << errorMessage;
715 }
701 setUncaughtException(tryCatchRun, "script evaluation");716 setUncaughtException(tryCatchRun, "script evaluation");
702 717
703 _evaluatingCounter--;718 _evaluatingCounter--;
@@ -749,7 +764,7 @@ void ScriptEngineV8::setUncaughtException(const v8::TryCatch &tryCatch, const QS · 45 unmodified lines
749 if (backtraceV8String->IsString()) {764 if (backtraceV8String->IsString()) {
750 if (v8::Local<v8::String>::Cast(backtraceV8String)->Length() > 0) {765 if (v8::Local<v8::String>::Cast(backtraceV8String)->Length() > 0) {
751 v8::String::Utf8Value backtraceUtf8Value(getIsolate(), backtraceV8String);766 v8::String::Utf8Value backtraceUtf8Value(getIsolate(), backtraceV8String);
752 QString errorBacktrace = *backtraceUtf8Value;767 QString errorBacktrace = QString(*backtraceUtf8Value).replace("\\n","\n");
753 ex->backtrace = errorBacktrace.split("\n");768 ex->backtrace = errorBacktrace.split("\n");
754 769
755 }770 }
@@ -790,14 +805,14 @@ QString ScriptEngineV8::formatErrorMessageFromTryCatch(v8::TryCatch &tryCatch) { · 34 unmodified lines
790 if (backtraceV8String->IsString()) {805 if (backtraceV8String->IsString()) {
791 if (v8::Local<v8::String>::Cast(backtraceV8String)->Length() > 0) {806 if (v8::Local<v8::String>::Cast(backtraceV8String)->Length() > 0) {
792 v8::String::Utf8Value backtraceUtf8Value(getIsolate(), backtraceV8String);807 v8::String::Utf8Value backtraceUtf8Value(getIsolate(), backtraceV8String);
793 errorBacktrace = *backtraceUtf8Value;808 errorBacktrace = QString(*backtraceUtf8Value).replace("\\n","\n");
794 }809 }
795 }810 }
796 }811 }
797 QTextStream resultStream(&result);812 QTextStream resultStream(&result);
798 resultStream << "failed on line " << errorLineNumber << " column " << errorColumnNumber << " with message: \"" << errorMessage <<"\" backtrace: " << errorBacktrace;813 resultStream << "failed on line " << errorLineNumber << " column " << errorColumnNumber << " with message: \"" << errorMessage <<"\" backtrace: " << errorBacktrace;
799 }814 }
800 return result;815 return result.replace("\\n", "\n");
801}816}
802 817
803v8::Local<v8::ObjectTemplate> ScriptEngineV8::getObjectProxyTemplate() {818v8::Local<v8::ObjectTemplate> ScriptEngineV8::getObjectProxyTemplate() {