mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 20:56:52 +02:00
Add logging of signal slot exceptions in ScriptEngine
This commit is contained in:
parent
ec8a2ae093
commit
f60cd09b45
1 changed files with 10 additions and 1 deletions
|
@ -50,6 +50,8 @@
|
||||||
|
|
||||||
#include "MIDIEvent.h"
|
#include "MIDIEvent.h"
|
||||||
|
|
||||||
|
static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)
|
Q_DECLARE_METATYPE(QScriptEngine::FunctionSignature)
|
||||||
static int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();
|
static int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature>();
|
||||||
|
|
||||||
|
@ -111,7 +113,7 @@ static bool hadUncaughtExceptions(QScriptEngine& engine, const QString& fileName
|
||||||
const auto line = QString::number(engine.uncaughtExceptionLineNumber());
|
const auto line = QString::number(engine.uncaughtExceptionLineNumber());
|
||||||
engine.clearExceptions();
|
engine.clearExceptions();
|
||||||
|
|
||||||
auto message = QString("[UncaughtException] %1 in %2:%3").arg(exception, fileName, line);
|
auto message = QString(SCRIPT_EXCEPTION_FORMAT).arg(exception, fileName, line);
|
||||||
if (!backtrace.empty()) {
|
if (!backtrace.empty()) {
|
||||||
static const auto lineSeparator = "\n ";
|
static const auto lineSeparator = "\n ";
|
||||||
message += QString("\n[Backtrace]%1%2").arg(lineSeparator, backtrace.join(lineSeparator));
|
message += QString("\n[Backtrace]%1%2").arg(lineSeparator, backtrace.join(lineSeparator));
|
||||||
|
@ -132,6 +134,13 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam
|
||||||
_allScriptsMutex.lock();
|
_allScriptsMutex.lock();
|
||||||
_allKnownScriptEngines.insert(this);
|
_allKnownScriptEngines.insert(this);
|
||||||
_allScriptsMutex.unlock();
|
_allScriptsMutex.unlock();
|
||||||
|
|
||||||
|
connect(this, &QScriptEngine::signalHandlerException, this, [](const QScriptValue& exception) {
|
||||||
|
auto fileName = exception.property("fileName").toString();
|
||||||
|
auto lineNumber = exception.property("lineNumber").toString();
|
||||||
|
auto message = QString(SCRIPT_EXCEPTION_FORMAT).arg(exception.toString(), fileName, lineNumber);
|
||||||
|
qCWarning(scriptengine) << qPrintable(message);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptEngine::~ScriptEngine() {
|
ScriptEngine::~ScriptEngine() {
|
||||||
|
|
Loading…
Reference in a new issue