# İstisna

Adres: https://softwaredictionary.org/tr/terimler/exception
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Exception
Türkçe karşılığı: özel durum
Okunuşu: iksepşın

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 yakalamak

```javascript
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.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
