error middleware
- Node.js kursu
- Orta seviye
- Ders 79/116
- 5 dk
Express error middleware yazmayı öğrenirsin.
error middleware
Express'te error middleware, rotalardan fırlatılan veya next(err) ile geçirilen hataları yakalar. Normal middleware'den farkı dört argümanlı olmasıdır: (err, req, res, next).
Express, dört argümanı gördüğünde bunun bir hata işleyici olduğunu anlar. Örneğin app.use((err, req, res, next) => { res.status(500).json({ error: err.message }); }). Bu middleware en sona konur; çünkü rotalardan gelen hatalar oraya düşer. err ile hata nesnesine erişir, res.status(500) ile sunucu hatası kodunu verir, .json() ile istemciye hata iletisini döndürürsün. Böylece API kontrollü hata yanıtları verir.
error middleware tanımlama
Error middleware tanımlarken dört argüman yazmak zorunludur. Üç argümanlı yazarsanız Express onu normal middleware sanar ve hatalar oraya düşmez. İlk argüman her zaman err olmalıdır.
Örneğin app.use((err, req, res, next) => { ... }). Hata oluştuğunda Express bu middleware'i çağırır ve err ile hata nesnesini geçirir. next parametresi kullanılmazsa bile yazılmalıdır; çünkü Express argüman sayısına bakar. Eğer hatayı bir sonraki işleyiciye geçirmek isterseniz next(err) çağırabilirsiniz. Aksi halde res.status() ve res.json() ile yanıtı bitirirsiniz. Bu, üretim API'lerinde hata yönetiminin standardıdır.
Uygulama error middleware ekle
Bir error middleware tanımla. Dört argümanlı (err, req, res, next) olsun. res.status(500).json({ error: err.message }) ile yanıtı gönder. Middleware rotadan SONRA olsun. Self-request hazır.
Başlangıç kodu
const express = require("express");
const app = express();
app.get("/", (req, res, next) => {
next(new Error("test"));
});
// Error middleware (4 argümanlı) — 500 ile JSON döndür
// buraya yaz
// Self-request (hazır kod)
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log(body); server.close(); });
});
});Örnek çözüm
app.use((err, req, res, next) => {
res.status(500).json({ error: err.message });
});Beklenen çıktı
{"error":"test"}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Express error middleware kaç argüman alır?
(err, req, res, next)- 2
- 3
- 4 Doğru cevap
- 1
Açıklama: Error middleware 4 argümanlıdır: err, req, res, next.
2 error middleware imzasını tamamla
app.use((____, req, res, next) => { res.status(500).json({ error: err.message }); });
app.use((err, req, res, next) => { res.status(500).json({ error: err.message }); });
Açıklama: İlk argüman err'dir; Express bunu hata işleyici sayar.
3 Argümanı rolüne eşle
| Kavram | Anlamı |
|---|---|
err |
Hata nesnesi |
req |
İstek |
res |
Yanıt |
next |
Sonraki adım |