From 4651dfb27ccd88165c39b754012bb7b33004a7c6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 13 Aug 2025 17:45:35 +0200 Subject: [PATCH] refactor: consistent error handling helpers API MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../ocpp/1.6/OCPP16IncomingRequestService.ts | 7 +-- src/utils/ErrorUtils.ts | 47 ++++++++++++------- 2 files changed, 35 insertions(+), 19 deletions(-) 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 } -- 2.43.0