Узнайте о различных типах ошибок, с которыми вы можете справиться, и о том, как с ними справиться с помощью Express.js.

Ключевые выводы

  • Ошибки в приложениях Express.js можно разделить на синтаксические ошибки и ошибки времени выполнения, ошибки проверки ввода и ошибки пользователя, ошибки, связанные с базой данных и сетью, а также ошибки сторонних API и служб.
  • Перехват и запись ошибок в консоль — это простой способ обработки ошибок на этапах разработки и отладки в Express.js. Пакеты обработки ошибок, такие как express-error-handler, предоставляют готовые к использованию функции для управления ошибками и реагирования на них.
  • Обработка синхронных и асинхронных ошибок с помощью блоков try-catch — эффективный метод в Express.js. Для асинхронных операций интеграция ключевых слов async и await в блоки try-catch может улучшить обработку ошибок. Создание пользовательского промежуточного программного обеспечения для обработки ошибок позволяет использовать централизованный и индивидуальный подход к управлению ошибками.
instagram viewer

В идеальном сценарии вы создаете свои API и серверные службы, развертываете их в рабочей среде, а затем расслабляетесь, пока другие используют их. К сожалению, в реальном мире программы, которые вы пишете, почти наверняка будут содержать ошибки и баги.

По этой причине при разработке API-интерфейсов Express.js и серверных служб важно учитывать, как могут возникать различные ошибки и как эффективно с ними справляться.

Предвидя такие сценарии, вы можете быть уверены, что ваши приложения не только эффективно обрабатывают сбои, но и обеспечивают бесперебойную работу пользователей.

Распространенные типы ошибок в приложениях Express.js

При разработке приложений Express.js вы столкнетесь с различными типами ошибок, в том числе:

  1. Синтаксические ошибки и ошибки времени выполнения: синтаксические ошибки возникают, когда в синтаксисе кода есть ошибки, что означает, что приложение не может работать. С другой стороны, ошибки времени выполнения возникают во время работы программы, как правило, из-за непредвиденных условий или неверных данных.
  2. Проверка ввода и ошибки пользователя: эти ошибки возникают, когда пользователи предоставляют недостаточные или неверные данные во время взаимодействия с приложением. Эти ошибки могут проявляться в различных формах, таких как отсутствие обязательных полей, неправильные форматы данных или значения, не соответствующие определенным критериям.
  3. Ошибки, связанные с базой данных и сетью: Ошибки, связанные с базой данных и сетью, могут возникать при проблемах с подключением к базе данных или при сбое связи с внешними приложениями по сети. Эти ошибки могут быть особенно неприятными, если ваше приложение использует сеть для работы.
  4. Ошибки стороннего API и сервисов: Ошибки также могут возникать при взаимодействии с внешними API или сервисами. При выполнении запросов к внешним системам могут возникать различные проблемы. Например, API может находиться в режиме простоя, возвращать ответы с ошибками из-за недопустимых параметров или возвращать непредвиденные форматы данных.

Существуют различные методы, которые вы можете использовать для эффективной обработки ошибок в вашем Express.js. REST API и серверные службы.

1. Перехват и запись ошибок в консоль

Простой способ обработки ошибок — перехватывать их и выводить подробности на консоль. Такой подход помогает выявлять ошибки на этапах разработки и отладки.

Используя консоль.ошибка(), вы можете получить представление о характере и расположении ошибок в вашем приложении. Вот пример кода:

app.get('/example', (req, res) => {
try {
// Code that may cause an error
const result = someFunction();
res.json(result);
} catch (error) {
console.error('Error occurred:', error);
res.status(500).json({ message: 'An error occurred.' });
}
});

2. Использование пакетов обработки ошибок

Express.js предлагает несколько пакетов промежуточного программного обеспечения для обработки ошибок, чтобы упростить управление ошибками. Один из таких пакетов экспресс-обработчик ошибок— эти пакеты упрощают обработку ошибок и реагирование на них, предоставляя готовые к использованию функции, такие как настраиваемые сообщения об ошибках и функции регистрации ошибок.

Чтобы использовать этот пакет, вам необходимо установить его в свой проект:

npm install express-error-handler

После установки вы можете использовать его функции для расширения возможностей обработки ошибок вашего приложения.

const errorHandler = require('express-error-handler');

// Register the error-handling middleware
app.use(errorHandler({
static: {
'404': 'path/to/404.html'
}
}));

Например, в приведенном выше примере предположим, что пользователь запрашивает несуществующий маршрут. Функция обработчика сработает и перенаправит пользователя на пользовательскую страницу ошибки 404, 404.html. Это гарантирует, что приложение Express.js эффективно обрабатывает ошибку «страница не найдена».

По сути, эти пакеты обеспечивают более удобный подход к управлению ошибками, которые могут возникнуть.

3. Обработка синхронных и асинхронных ошибок с использованием блоков Try-Catch

Умение обращаться синхронное и асинхронное программирование ошибки с использованием блоков try-catch — эффективная техника в Express.js. Для синхронного кода вы можете управлять ошибками, заключая потенциально подверженный ошибкам раздел в блок try-catch.

Вот пример кода, демонстрирующий использование блоков try-catch:

app.get('/data', (req, res) => {
try {
// code that may cause an error
const result = someFunction();
res.json(result);
} catch (error) {
console.error('Error occurred:', error);
res.status(500).json({ message: 'An error occurred.' });
}
});

Однако при работе с асинхронными операциями, такими как запросы к базе данных или используя Аксиосдля использования API одних блоков try-catch может быть недостаточно. В таких случаях теперь вы можете интегрировать асинхронно и жду ключевые слова внутри блоков для более эффективной обработки ошибок.

Вот пример кода:

app.get('/data', async (req, res) => {
try {
const data = await fetchDataFromDatabase();
res.json(data);
} catch (error) {
console.error('Async Error:', error);
res.status(500).json({ message: 'Error occurred fetching data.' });
}
});

4. Создание пользовательского ПО промежуточного слоя для обработки ошибок

Пользовательское промежуточное ПО для обработки ошибок позволяет вам определить, как ваша программа обрабатывает ошибки и соответствующие ответы, в соответствии с требованиями вашего приложения.

Создавая функции промежуточного программного обеспечения для обработки ошибок, вы можете централизовать и настроить управление ошибками, обеспечив более организованный и адаптированный подход к обработке ошибок во всем приложении.

Вот пример пользовательского кода функции промежуточного слоя:

// Custom middleware for handling not found errors
const notFoundHandler = (req, res, next) => {
const resource = req.params.resource;

if (resource 'users') {
return res.status(404).json({ message: 'User not found.' });
} elseif (resource 'products') {
return res.status(404).json({ message: 'Product not found.' });
} else {
return res.status(404).json({ message: 'Requested resource not found.' });
}
};

app.use('/api/:resource', notFoundHandler);

В этом примере нефаундхандлер функция проверяет ресурс параметр в URL-адресе запроса. В зависимости от предоставленного значения функция обработчика отвечает пользовательскими сообщениями об ошибках для различных типов ресурсов, таких как пользователи и продукты.

Для любого другого ресурса, который явно не обрабатывается, он предоставляет общее сообщение об ошибке. Кроме того, в этом промежуточном программном обеспечении вы также можете направлять пользователей на настраиваемые страницы ошибок, которые помогают им решить проблемы, с которыми они столкнулись.

Используя это специальное промежуточное ПО для обработки ошибок, вы можете адаптировать управление ошибками и ответы к различным ситуациям, делая обработку ошибок более конкретной и информативной.

В производственной среде важно реализовать ведение журнала и мониторинг ошибок, чтобы отслеживать ошибки приложений. Некоторые эффективные инструменты, которые вы можете использовать, включают Уинстон и Морган, среди прочих. Эти инструменты регистрируют ошибки в файле, на централизованном сервере или на платформе мониторинга, что позволяет быстро выявлять и устранять проблемы.

Вот пример того, как вы можете использовать Winston в приложении Express.js для регистрации ошибок:

const winston = require('winston');
const expressWinston = require('express-winston');

app.use(expressWinston.errorLogger({
// Error logging middleware using Winston
}));

Управление ошибками в серверных приложениях

Внедрение эффективных методов управления ошибками и отказоустойчивых процедур имеет важное значение для создания надежных серверных приложений.

В приложениях Express.js важно предвидеть, планировать и внедрять эффективные методы обработки ошибок, которые позволят вам быстро выявлять ошибки, управлять ими и реагировать на них. Это гарантирует более надежную и удобную работу для ваших пользователей.