History

Merge pull request #6759 from huffman/script-engine-slot-exception

Add logging of signal slot exceptions in ScriptEngine

Brad Hefta-Gaub committed 10 years ago

Commit 553e4552 parents a78d527 810da771 file · +7 −1Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+7−1
@@ -51,6 +51,8 @@ · 50 unmodified lines
5151
5252 #include "MIDIEvent.h"
5353
54+static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";
55+
5456 Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)
5557 static int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();
5658
@@ -112,7 +114,7 @@ static bool hadUncaughtExceptions(QScriptEngine& engine, const QString& fileName · 55 unmodified lines
112114 const auto line = QString::number(engine.uncaughtExceptionLineNumber());
113115 engine.clearExceptions();
114116
115− auto message = QString("[UncaughtException] %1 in %2:%3").arg(exception, fileName, line);
117+ auto message = QString(SCRIPT_EXCEPTION_FORMAT).arg(exception, fileName, line);
116118 if (!backtrace.empty()) {
117119 static const auto lineSeparator = "\n ";
118120 message += QString("\n[Backtrace]%1%2").arg(lineSeparator, backtrace.join(lineSeparator));
@@ -133,6 +135,10 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam · 14 unmodified lines
133135 _allScriptsMutex.lock();
134136 _allKnownScriptEngines.insert(this);
135137 _allScriptsMutex.unlock();
138+
139+ connect(this, &QScriptEngine::signalHandlerException, this, [this](const QScriptValue& exception) {
140+ hadUncaughtExceptions(*this, _fileNameString);
141+ });
136142 }
137143
138144 ScriptEngine::~ScriptEngine() {