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.