61 lines
2.2 KiB
JavaScript
61 lines
2.2 KiB
JavaScript
exports.newFoundationsUtilitiesErrorHandlingFunctions = function () {
|
|
|
|
let thisObject = {
|
|
throwHandledException: throwHandledException
|
|
}
|
|
|
|
return thisObject
|
|
|
|
/*
|
|
This function helps Bots to integrate their error handling to the In-App-Docs.
|
|
*/
|
|
function throwHandledException(
|
|
processIndex, // The index of the process where the exception happened.
|
|
MODULE_NAME, // The name of the module where the exception happened.
|
|
source, // A user understandable source of the exception. This will be part of the Doc's page name.
|
|
err, // The Error object available, if any.
|
|
message, // The Message, which will be part of the Docs page name.
|
|
node // The closest node related to the exception.
|
|
) {
|
|
if (err === undefined) {
|
|
err = {
|
|
message: message
|
|
}
|
|
}
|
|
/*
|
|
This is what the Docs Space will get.
|
|
*/
|
|
let docs = {
|
|
project: 'Foundations',
|
|
category: 'Topic',
|
|
type: 'TS ' + source + ' Error - ' + message,
|
|
placeholder: {}
|
|
}
|
|
TS.projects.education.utilities.docsFunctions.buildPlaceholder(
|
|
docs,
|
|
err,
|
|
node.name,
|
|
node.code,
|
|
node.config,
|
|
node.value,
|
|
err
|
|
)
|
|
/*
|
|
This will be needed for the process level error handling. Must be added
|
|
here after the buildPlaceholder function call otherwise it would be included as a
|
|
placeholder.
|
|
*/
|
|
err.docs = docs
|
|
err.node = node
|
|
/*
|
|
Users will not always be watching the console when an exception happens, for that
|
|
reason we will send it also to the Debug Logs.
|
|
*/
|
|
let errorDetails = err.errorDetails
|
|
if (errorDetails === undefined) { errorDetails = "No error details available."}
|
|
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
|
|
"[ERROR] " + errorDetails)
|
|
|
|
throw (err)
|
|
}
|
|
} |