COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
35/ 41

Dayanıklılık ve gözlem

Hata yönetimi: istisnadan anlamlı yanıta

Beklenen hatalar ile beklenmeyenleri ayırmak ve kullanıcıya iç ayrıntı sızdırmadan yanıt vermek.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Her hata aynı değildir. Beklenen hatalar iş akışının parçasıdır: kayıt bulunamadı, slug zaten kullanılıyor, yetki yok. Bunlar istisna fırlatmadan, uygun durum koduyla (404, 409, 403) döndürülmelidir. Beklenmeyen hatalar ise programın öngörmediği durumlardır: veritabanına ulaşılamaması, null referans, bir bağımlılığın çökmesi. Bunlar en dıştaki hata yakalayıcıya kadar yükselmelidir.

Her katmanda try/catch yazmak çoğunlukla zararlıdır: istisnayı yakalayıp yutan veya yalnız loglayıp devam eden kod, hatanın gerçek yerini gizler ve tutarsız durum bırakır. Bir istisnayı yalnız onunla anlamlı bir şey yapabiliyorsan yakala: yeniden dene, alternatif kaynağa geç veya daha anlamlı bir hataya çevir.

ASP.NET Core’da UseExceptionHandler ve IExceptionHandler, beklenmeyen istisnaları merkezi olarak yakalar, kaydeder ve istemciye ProblemDetails döndürür. Üretimde yığın izi, SQL metni veya bağlantı dizesi asla yanıta konmaz; bunun yerine bir traceId verilir. Simülatördeki ‘Veritabanı hatası’ senaryosu bu akışı gösterir.

NERESİNDE KULLANIRSIN?

İyi hata yönetimi hem kullanıcıyı hem geliştiriciyi doğru bilgiyle buluşturur.

SIK YAPILAN HATA

catch (Exception) { } ile hatayı yutmak veya ex.ToString()’i istemciye döndürmek.

CANLI ANİMASYON

Bir mektubun şehirdeki yolculuğu

İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.

İSTEMCİKENARWEB SUNUCUSUAPI · ASP.NET COREVERİTarayıcıKullanıcının ekranıAğDNS · TCP · TLSTers vekilTLS sonlandırma, sıkıştırmaNext.js sunucusuSSR ve route handlerKestrelHTTP sunucusuHata yakalayıcıMiddlewareRoutingEndpoint seçimiHız sınırıMiddlewareKimlik doğrulamaKim olduğunYetkilendirmeNeye izin varModel bindingHTTP → C# + doğrulamaControllerEndpoint koduServisİş kuralları (DI)RedisDağıtık önbellekEF CoreLINQ → SQLSQL ServerSorgu planı, indeks
GİDİŞ →

Normal bir yazı isteği yola çıkıyor.

TarayıcıSenin ekranın. İsteği yazan ve sonunda cevabı sayfaya çeviren yer.
1 / 9
01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
// Beklenen durum: istisna değil, sonuç
var post = await posts.GetPublishedAsync(slug, ct);
return post is null ? NotFound() : Ok(post);

Bulunamamak bir hata durumu değil, olası bir sonuçtur.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Bir müşteri ‘sayfa hata verdi’ diye ekran görüntüsü gönderiyor; görüntüde yalnız ‘traceId: 00-4bf92f…’ var. Sorunu nasıl bulursun?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Log sisteminde TraceId = 00-4bf92f… ile ara:
hata kaydı, istisna türü, yığın izi, isteğin yolu ve süresi.
Dağıtık izleme varsa aynı kimlikle Next.js ve SQL adımları da görünür.

traceId, kullanıcıya iç ayrıntı göstermeden destek talebini teknik kayda bağlar.