Ana içeriğe geç

İstisna

İngilizcesi
Exception
Türkçe karşılığı
özel durum
Okunuşu
iksepşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/exception

Kısaca

İstisna, bir hata oluştuğunda programın normal akışını kesen bir olaydır; kod bunu programı çökertmek yerine yakalayıp ele alabilir.

Programlamada istisna (exception) nedir?

İstisna, eksik bir dosya, başarısız bir ağ isteği ya da geçersiz girdi gibi program çalışırken bir şeylerin ters gittiğini bildirir. Kod bir istisna fırlattığında (throw veya raise), normal yürütme o noktada durur. Program daha sonra sorunu ele alabileceğini bildirmiş bir kod arar.

İstisnalar çağrı yığınında yukarı doğru ilerler. İstisnayı fırlatan fonksiyon onu yakalamazsa, onu çağıran fonksiyona, sonra da onun çağırıcısına ve böyle devam ederek yakalama fırsatı verilir. İstisnaları, riskli kodu bir try bloğuna alıp bir hata oluşursa çalışan bir catch bloğu (Python'da except adını alır) ve isteğe bağlı olarak dosyaları kapatmak gibi temizlik işleri için yararlı, her durumda çalışan bir finally bloğu ekleyerek yönetirsiniz. Hiçbir şey istisnayı yakalamazsa program ya da istek genellikle bir hata mesajı ve bir yığın izi (stack trace) ile başarısız olur.

Yangın alarmı istisna için iyi bir benzetmedir. Çaldığında herkes yaptığı işi bırakır ve yangınla başa çıkmak üzere eğitilmiş kişiler devralır; kimse yanıt vermezse tüm bina tahliye edilir. İstisnalar, programların ana 'mutlu yol' mantığını sorunlarla ilgilenen koddan ayrı tutmasını sağlar.

İstisnalar sıklıkla genel olarak hatalarla karıştırılır. Sözdizimi hataları kodun hiç çalışmasını engeller; istisnalar ise çalışma zamanında olur ve yönetilebilir. Go ve Rust gibi bazı diller, istisna fırlatmak yerine hataları sıradan değerler olarak döndürmeyi tercih eder; bu, olası her başarısızlığı kodda görünür kılar. Bir istisnayı yakalayıp sessizce yok saymak, hataları gizlediği için yaygın bir anti-desendir.

Önemli noktalar

  • İstisna, çalışma zamanında bir hata oluştuğunda normal yürütmeyi keser.
  • Kod bir istisna fırlatır ve bir try/catch bloğu onu yakalayıp ele alabilir.
  • Yakalanmayan istisnalar çağrı yığınında yukarı ilerler ve programı çökertebilir.
  • finally bloğu, istisna olsun olmasın çalışır; bu da temizlik işlerine uygundur.
  • Yalnızca anlamlı biçimde ele alabileceğiniz istisnaları yakalayın; sessizce yutmak hataları gizler.

Örnek

Bir istisna fırlatmak ve yakalamakjavascript
function parseAge(input) {
  const age = Number(input);
  if (Number.isNaN(age)) {
    throw new Error(`"${input}" is not a number`); // stop and signal a problem
  }
  return age;
}

try {
  parseAge("abc");
} catch (error) {
  console.error("Invalid input:", error.message); // handle the problem
} finally {
  console.log("Validation finished"); // always runs
}

Sık sorulan sorular

Hata (error) ile istisna (exception) arasındaki fark nedir?

Terimler çoğu zaman birbirinin yerine kullanılır ve birçok dilde istisna, bir çalışma zamanı hatasını bildirmek için kullanılan nesnedir. Java ise bellek tükenmesi gibi bir uygulamanın ele almaya çalışmaması gereken ciddi sorunlar için Error ile kodun yakalaması beklenen Exception arasında ayrım yapar.

Yığın izi (stack trace) nedir?

Yığın izi, bir istisna fırlatıldığı anda etkin olan fonksiyon çağrılarının dosya adları ve satır numaralarıyla yazdırılan listesidir. Yukarıdan okunduğunda sorunun nerede oluştuğunu ve programın oraya nasıl geldiğini gösterir.

async/await ile hataları nasıl yönetirim?

await çağrılarını bir try/catch bloğuna alın. Bir async fonksiyonun içinde reddedilen bir promise fırlatılmış bir istisna gibi davranır, dolayısıyla catch bloğu hatayı alır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar