Обработка ошибок в Express.js: эффективные стратегии и ответные сообщения

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

Использование Middleware для глобальной обработки ошибок

Создайте глобальную обработку ошибок middleware, добавив следующий код в конец app.js основного файла вашего Express.js приложения.

app.use((err, req, res, next) => {  
  console.error(err.stack);  
  res.status(500).send('Something went wrong!');  
});  

Обработка ошибок для конкретных Route

В конкретном случае route вы можете использовать try -блок catch для перехвата ошибок и предоставления соответствующих ответных сообщений.

app.get('/profile/:id', async(req, res) => {  
  try {  
    const user = await getUserById(req.params.id);  
    res.json(user);  
  } catch(error) {  
    res.status(404).send('User not found!');  
  }  
});  

Использование централизованной ошибки Middleware

Создайте централизованную ошибку middleware для обработки ошибок, возникающих из различных файлов route.

app.use((req, res, next) => {  
  const error = new Error('Not found');  
  error.status = 404;  
  next(error);  
});  
  
app.use((err, req, res, next) => {  
  res.status(err.status || 500);  
  res.send(err.message || 'Something went wrong');  
});  

Обработка асинхронных ошибок

В случае асинхронной обработки используйте next метод для передачи ошибок в глобальную обработку ошибок middleware.

app.get('/data',(req, res, next) => {  
  fetchDataFromDatabase((err, data) => {  
    if(err) {  
      return next(err);  
    }  
    res.json(data);  
  });  
});  

 

Заключение

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