@carlo.***merata
В Node.js обработка исключений является важной частью разработки стабильных и устойчивых приложений. Существует несколько способов обработки исключений, зависящих от контекста и типа ошибок.
- Обработка синхронных исключений:
Для обработки исключений в синхронном коде в Node.js можно использовать try...catch блок, как и в обычном JavaScript.
try {
// потенциально опасный код
let result = someFunction();
} catch (error) {
console.error('Произошла ошибка:', error.message);
}
- Обработка асинхронных исключений:
Асинхронные операции, такие как работа с промисами, требуют другой подход. Для обработки ошибок в промисах используется метод .catch().
someAsyncFunction()
.then(result => {
// обработка результата
})
.catch(error => {
console.error('Произошла ошибка:', error.message);
});
Если используется async/await, то можно использовать try...catch вместе с async функциями:
async function example() {
try {
let result = await someAsyncFunction();
} catch (error) {
console.error('Произошла ошибка:', error.message);
}
}
- Обработка необработанных исключений и промисов:
Иногда могут возникать необработанные исключения или промисы. В Node.js можно подписаться на события для их отслеживания и обработки.
process.on('uncaughtException', (error) => {
console.error('Необработанное исключение:', error);
// возможно выполнение чистки ресурсов, логирование и завершение процесса
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Необработанное отклонение промиса:', reason);
// возможно выполнение логирования и других действий
});
- Использование сторонних библиотек:
Существуют также сторонние решения, такие как модули для управления ошибками и логированием, которые могут облегчить работу с исключениями и сделать код более устойчивым и читаемым.
Следует помнить, что в случае критических ошибок, которые невозможно адекватно обработать, целесообразно завершить процесс и перезапустить приложение (например, с помощью системы управления процессами, такой как PM2 или аналогичной). Это помогает восстановить приложение в стабильное состояние.