History

Complete Console Exception.

NeetBhagat committed 9 years ago

Commit e8fc7661 parent 71bff046 files · +109 −13Browse files

Showing the changes to libraries/script-engine/src/ConsoleScriptingInterface.cpp (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/ConsoleScriptingInterface.cpp+40−4
@@ -52,10 +52,46 @@ void ConsoleScriptingInterface::error(QString message) { · 51 unmodified lines
5252
5353 void ConsoleScriptingInterface::exception(QString message) {
5454 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
55− scriptEngine->scriptErrorMessage(message);
56− }
55+ scriptEngine->logConsoleException(message);
56+ }
57+
58+}
59+
60+bool ConsoleScriptingInterface:: hasCorrectSyntax(QScriptProgram& program) {
61+ const auto syntaxCheck = QScriptEngine::checkSyntax(program.sourceCode());
62+ if (syntaxCheck.state() != QScriptSyntaxCheckResult::Valid) {
63+ const auto error = syntaxCheck.errorMessage();
64+ const auto line = QString::number(syntaxCheck.errorLineNumber());
65+ const auto column = QString::number(syntaxCheck.errorColumnNumber());
66+ const auto message = QString("[SyntaxError] %1 in %2:%3(%4)").arg(error, program.fileName(), line, column);
67+ qCritical() << qPrintable(message);
68+ return false;
69+ }
70+ return true;
71+}
72+
73+QString ConsoleScriptingInterface::hadUncaughtExceptions(QScriptEngine& engine, QString& fileName) {
74+ log("4");
75+ //if (engine.hasUncaughtException()) {
76+ const auto backtrace = engine.uncaughtExceptionBacktrace();
77+ const auto exception = engine.uncaughtException().toString();
78+ const auto line = QString::number(engine.uncaughtExceptionLineNumber());
79+ engine.clearExceptions();
80+ log("5");
81+ static const QString SCRIPT_EXCEPTION_FORMAT = "[UncaughtException] %1 in %2:%3";
82+ auto message = QString(SCRIPT_EXCEPTION_FORMAT).arg(exception, fileName, line);
83+ if (!backtrace.empty()) {
84+ static const auto lineSeparator = "\n ";
85+ message += QString("\n[Backtrace]%1%2").arg(lineSeparator, backtrace.join(lineSeparator));
86+ }
87+ // qCritical() << qPrintable(message);
88+ log("6");
89+ return message;
90+ //}
91+ //return false;
5792 }
5893
94+
5995 void ConsoleScriptingInterface::time(QString labelName) {
6096 QDateTime _currentTime = QDateTime::currentDateTime().toUTC();
6197 _listOfTimeValues.insert(labelName, _currentTime.toUTC());
@@ -126,9 +162,9 @@ void ConsoleScriptingInterface::asserts(bool condition, QString message) { · 64 unmodified lines
126162 }
127163 }
128164
129−void ConsoleScriptingInterface::trace(QString labelName) {
165+void ConsoleScriptingInterface::trace() {
130166 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {
131− scriptEngine->scriptErrorMessage(labelName);
167+ scriptEngine->logTraceException();
132168 }
133169 }
134170