Showing the changes to libraries/script-engine/src/v8/ScriptEngineV8.cpp (1 of 5 files). Show all
Unified · Split
| @@ -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 | ||
| 803 | v8::Local<v8::ObjectTemplate> ScriptEngineV8::getObjectProxyTemplate() { | 818 | v8::Local<v8::ObjectTemplate> ScriptEngineV8::getObjectProxyTemplate() { |