From: Jérôme Benoit Date: Wed, 13 Aug 2025 15:45:35 +0000 (+0200) Subject: refactor: consistent error handling helpers API X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=4651dfb27ccd88165c39b754012bb7b33004a7c6;p=e-mobility-charging-stations-simulator.git refactor: consistent error handling helpers API Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts index 7c0afb28..2d64527d 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -694,6 +694,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { error as Error, { errorResponse: OCPP16Constants.OCPP_CANCEL_RESERVATION_RESPONSE_REJECTED, + throwError: false, } )! } @@ -913,7 +914,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation, OCPP16IncomingRequestCommand.DATA_TRANSFER, error as Error, - { errorResponse: OCPP16Constants.OCPP_DATA_TRANSFER_RESPONSE_REJECTED } + { errorResponse: OCPP16Constants.OCPP_DATA_TRANSFER_RESPONSE_REJECTED, throwError: false } )! } } @@ -1179,7 +1180,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation, OCPP16IncomingRequestCommand.GET_DIAGNOSTICS, error as Error, - { errorResponse: OCPP16Constants.OCPP_RESPONSE_EMPTY } + { errorResponse: OCPP16Constants.OCPP_RESPONSE_EMPTY, throwError: false } )! } } else { @@ -1373,7 +1374,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation, OCPP16IncomingRequestCommand.RESERVE_NOW, error as Error, - { errorResponse: OCPP16Constants.OCPP_RESERVATION_RESPONSE_FAULTED } + { errorResponse: OCPP16Constants.OCPP_RESERVATION_RESPONSE_FAULTED, throwError: false } )! } } diff --git a/src/utils/ErrorUtils.ts b/src/utils/ErrorUtils.ts index 808c2b53..75998b96 100644 --- a/src/utils/ErrorUtils.ts +++ b/src/utils/ErrorUtils.ts @@ -21,12 +21,16 @@ const moduleName = 'ErrorUtils' export const handleUncaughtException = (): void => { process.on('uncaughtException', (error: Error) => { console.error(chalk.red('Uncaught exception: '), error) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + logger?.error?.('Uncaught exception:', error) }) } export const handleUnhandledRejection = (): void => { - process.on('unhandledRejection', (reason: unknown) => { - console.error(chalk.red('Unhandled rejection: '), reason) + process.on('unhandledRejection', (reason: unknown, promise: Promise) => { + console.error(chalk.red('Unhandled rejection: '), { promise, reason }) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + logger?.error?.('Unhandled rejection:', { promise, reason }) }) } @@ -53,12 +57,24 @@ export const handleFileException = ( case 'EEXIST': logMsg = `${fileType} file ${file} already exists:` break + case 'EISDIR': + logMsg = `${fileType} file ${file} is a directory:` + break case 'ENOENT': logMsg = `${fileType} file ${file} not found:` break + case 'ENOSPC': + logMsg = `${fileType} file ${file} no space left on device:` + break + case 'ENOTDIR': + logMsg = `${fileType} file ${file} parent is not a directory:` + break case 'EPERM': logMsg = `${fileType} file ${file} permission denied:` break + case 'EROFS': + logMsg = `${fileType} file ${file} read-only file system:` + break default: logMsg = `${fileType} file ${file} error:` } @@ -95,10 +111,12 @@ export const handleSendMessageError = ( }, ...params, } - logger.error( - `${chargingStation.logPrefix()} ${moduleName}.handleSendMessageError: Send ${getMessageTypeString(messageType)} command '${commandName}' error:`, - error - ) + const logMsg = `${chargingStation.logPrefix()} ${moduleName}.handleSendMessageError: Send ${getMessageTypeString(messageType)} command '${commandName}' error:` + if (params.consoleOut === true) { + console.error(logMsg, error) + } else { + logger.error(logMsg, error) + } if (params.throwError === true) { throw error } @@ -117,17 +135,14 @@ export const handleIncomingRequestError = ( }, ...params, } - logger.error( - `${chargingStation.logPrefix()} ${moduleName}.handleIncomingRequestError: Incoming request command '${commandName}' error:`, - error - ) - if (params.throwError === false && params.errorResponse != null) { - return params.errorResponse - } - if (params.throwError === true && params.errorResponse == null) { - throw error + const logMsg = `${chargingStation.logPrefix()} ${moduleName}.handleIncomingRequestError: Incoming request command '${commandName}' error:` + if (params.consoleOut === true) { + console.error(logMsg, error) + } else { + logger.error(logMsg, error) } - if (params.throwError === true && params.errorResponse != null) { + if (params.throwError === false) { return params.errorResponse } + throw error }