CodeBlanks Logo Icon CodeBlanks

error middleware

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

index.js
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

index.js
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?

index.js
(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

Soru
app.use((____, req, res, next) => { res.status(500).json({ error: err.message }); });
Cevap
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

Orta seviye bölümündeki tüm dersler