Obsługa błędów w Express.js: skuteczne strategie i komunikaty odpowiedzi

Podczas tworzenia aplikacji obsługa błędów jest kluczowym aspektem, aby zapewnić płynne działanie użytkownika i złagodzić nieprzewidziane problemy. W Express.js środowisku istnieje kilka sposobów obsługi błędów i dostarczania użytkownikom odpowiednich komunikatów odpowiedzi. Oto przewodnik, jak to osiągnąć:

Używanie Middleware do globalnej obsługi błędów

Utwórz globalną obsługę błędów, middleware dodając następujący kod na końcu app.js głównego pliku aplikacji Express.js.

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

Obsługa błędów dla określonego Route

W konkretnym route, możesz użyć bloku try- catch do wyłapywania błędów i dostarczania odpowiednich komunikatów odpowiedzi.

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!');  
  }  
});  

Korzystanie z błędu scentralizowanego Middleware

Utwórz scentralizowany błąd middleware, aby obsłużyć błędy pochodzące z różnych 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');  
});  

Obsługa błędów asynchronicznych

W przypadku obsługi asynchronicznej należy zastosować next metodę przekazywania błędów do globalnej obsługi błędów middleware.

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

 

Wniosek

Obsługa błędów jest integralną częścią Express.js tworzenia aplikacji. Wykorzystując program middleware, obsługując określone błędy i dostarczając odpowiednie komunikaty odpowiedzi, możesz zapewnić płynne i niezawodne działanie aplikacji dla użytkowników.