# 3.10 İstisnalar (Exceptions)

C++ programlama dilinde, istisnalar (exceptions), bir program çalışırken beklenmeyen durumlarla başa çıkmanın bir yolunu sunar. İstisnalar, programın akışını kontrol etmeyi ve hataların yönetimini sağlamayı mümkün kılar. Bu, programların daha güvenilir ve hatalardan daha az etkilenir hale gelmesine yardımcı olur.

**İstisna Nedir?**

İstisna, bir hata durumunu temsil eden bir nesnedir. Bir programda beklenmedik bir durum meydana geldiğinde, bir istisna "fırlatılır" (thrown) ve bu durumun nasıl ele alınacağı belirlenebilir. C++ dilinde istisnalar genellikle `try`, `catch`ve `throw` anahtar kelimeleri ile yönetilir.

**Temel İstisna Yönetimi**

1. **`try` Bloğu**: İçinde bir hata olabileceğini düşündüğünüz kodu sarmalar. Eğer hata meydana gelirse, kontrol `catch`bloğuna geçer.
2. **`catch` Bloğu**: `try` bloğundaki kodda bir istisna fırlatıldığında, bu bloğun çalıştırılacağı yerdir. Burada istisnanın türüne göre uygun işlem yapılır.
3. **`throw` Anahtar Kelimesi**: Hata durumunda bir istisna fırlatmak için kullanılır.

**Örnek Kullanım**

Aşağıda, C++'da istisna yönetiminin nasıl kullanılacağını gösteren basit bir örnek bulunmaktadır.

```cpp
#include <iostream>
#include <stdexcept> // std::runtime_error için
using namespace std;

double bolme(double a, double b) {
    if (b == 0) {
        throw runtime_error("Bölme hatası: Bir sayı sıfıra bölünemez."); // İstisna fırlatma
    }
    return a / b;
}

int main() {
    double sayi1, sayi2;

    cout << "Bir sayı girin: ";
    cin >> sayi1;
    cout << "Bölmek için bir sayı girin: ";
    cin >> sayi2;

    try {
        double sonuc = bolme(sayi1, sayi2); // try bloğunda işlem
        cout << "Sonuç: " << sonuc << endl;
    } catch (const runtime_error& e) { // catch bloğunda hata yönetimi
        cout << "Hata: " << e.what() << endl; // Hata mesajını yazdır
    }

    return 0;
}
```

**Önemli Noktalar**

* **İstisna Türleri**: C++'da birçok yerleşik istisna türü vardır (örneğin, `std::runtime_error`, `std::out_of_range`, vb.). Kendi istisna türlerinizi de tanımlayabilirsiniz.
* **Hata Yönetimi**: `try`-`catch` yapısı, hata meydana geldiğinde programın çökmesini önler ve hataların yönetilmesini sağlar.
* **Performans**: İstisnaların kullanımı, kodun daha karmaşık hale gelmesine neden olabilir, bu nedenle dikkatli kullanılmalıdır.

#### Sonuç

C++ dilinde istisnalar, programcıların hataları yönetmesine ve daha sağlam kod yazmasına olanak tanır. İstisna yönetimi, yazılım geliştirme sürecinde önemli bir yer tutar ve programların daha güvenilir hale gelmesine yardımcı olur.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/3.0-siniflar/3.10-istisnalar-exceptions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
