İçeriğe geç
parazade

Hata Yönetimi Nedir?

İngilizce: Error Handling

Yayın: · Son güncelleme:

Hata Yönetimi Nedir? Kısaca

Hata yönetimi (error handling), bir programın çalışırken karşılaştığı beklenmedik durumları yakalayıp çökmeden, kontrollü biçimde ele almasını sağlayan yöntemlerin bütünüdür. Try-catch blokları, hata kodları ve loglama bu yöntemlerin parçasıdır.

Hata Yönetimi nedir?
İçindekiler
  1. Hata yönetimi nedir?
  2. Kullanılan yöntemler
  3. İyi hata yönetiminin ilkeleri

Hata yönetimi nedir?

Hata yönetimi, bir şeyler ters gittiğinde programın ne yapacağını önceden planlamaktır. İnternet bağlantısı kopabilir, kullanıcı tarih alanına harf yazabilir, ödeme servisi yanıt vermeyebilir. İyi bir program bu durumlarda çökmek yerine anlaşılır bir mesaj gösterir, gerekirse işlemi tekrar dener ve olayı kayda geçirir.

Kullanıcı açısından fark büyüktür. "Beklenmeyen bir hata oluştu" yazan boş bir ekran ile "Kart bilgileriniz onaylanmadı, lütfen kontrol edip tekrar deneyin" mesajı arasındaki fark, hata yönetiminin kalitesidir.

Kullanılan yöntemler

Diller farklı araçlar sunar. Python, Java ve JavaScript'te istisnalar try-catch (Python'da try-except) bloklarıyla yakalanır. Go gibi bazı diller ise fonksiyondan sonuçla birlikte bir hata değeri döndürür ve her çağrıdan sonra bu değerin kontrol edilmesini bekler.

Somut bir senaryo: bir e-ticaret sitesi kargo firmasının servisinden fiyat çekiyor. Servis 5 saniye içinde yanıt vermezse program hatayı yakalar, varsayılan kargo ücretini gösterir ve olayı loglar. Kullanıcı alışverişe devam eder, ekip de sorunu kayıttan fark eder.

İyi hata yönetiminin ilkeleri

Hataları sessizce yutmayın. Boş bir catch bloğu programı çalışır tutar ama sorunu görünmez kılar. Her yakalanan hatayı en azından loglamak, sonradan izini sürmeyi mümkün kılar.

Kullanıcıya gösterilen mesaj ile teknik kayıt ayrı tutulmalıdır. Kullanıcıya veritabanı hatasının ayrıntısını göstermek hem kafa karıştırır hem de saldırganlara sistem hakkında bilgi verir. Kendi kodunuzda dış servislere bağlanan her noktayı listeleyip her biri için "yanıt gelmezse ne olacak?" sorusunu yanıtlayarak başlayın.

Sıkça Sorulan Sorular

Hata yönetimi neden önemli?

Programın beklenmedik durumlarda çökmesini önler, kullanıcıya anlaşılır geri bildirim verir ve geliştiricinin sorunu bulmasını kolaylaştırır. Ayrıca hassas teknik bilgilerin kullanıcıya sızmasını engeller.

Her hatayı yakalamak doğru mu?

Hayır. Yalnız anlamlı biçimde ele alabileceğiniz hataları yakalamak gerekir. Tüm hataları genel bir blokla yutmak, gerçek sorunları gizleyip hata ayıklamayı zorlaştırır.

İlgili terimler

Try CatchTry catch, hata çıkarabilecek kodu try bloğunda çalıştırıp bir istisna oluştuğunda catch bloğunda yakalayan hata yönetimi yapısıdır. Böylece program çökmek yerine hatayı kontrollü biçimde ele alır.İstisna(Exception)İstisna (exception), program çalışırken normal akışı bozan beklenmedik bir durumun programlama dilindeki temsilidir. Sıfıra bölme, olmayan bir dosyayı açma ya da geçersiz veri dönüşümü istisna fırlatır.Loglama(Logging)Loglama (logging), bir yazılımın çalışırken gerçekleşen olayları belirli bir düzen ve seviye sistemiyle kayıt altına alması işlemidir. Hata ayıklama, performans izleme ve güvenlik denetimi için temel bir uygulamadır.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.JavaJava, Sun Microsystems tarafından 1995'te yayımlanan, bugün Oracle tarafından geliştirilen, nesne yönelimli ve platformdan bağımsız bir programlama dilidir; kod Java Sanal Makinesi (JVM) üzerinde çalışır.JavaScriptJavaScript, web sayfalarına buton tıklaması, form doğrulama ve anlık güncelleme gibi etkileşimler kazandıran, tarayıcıların yanı sıra Node.js ile sunucuda da çalışabilen yaygın bir programlama dilidir.GoGo (Golang), Google'da geliştirilip 2009'da açık kaynak olarak yayımlanan, derlenen, sade sözdizimli bir programlama dilidir. Sunucu yazılımları, bulut araçları ve yüksek eşzamanlılık gereken servislerde kullanılır.