CodeBlanks Logo Icon CodeBlanks

try/catch

try/catch ile çalışma zamanı hatalarını yakalamayı öğrenirsin.

try/catch ile hata yakalama

C++'ta çalışma zamanı hatası (istisna) oluştuğunda program normalde çöker. Bunu önlemek için riskli kodu try bloğuna, hata yakalama kodunu ise catch bloğuna yazarsın. İstisna fırlatıldığında catch bloğu çalışır ve program yoluna devam eder.

try {
    int n = stoi("abc");
} catch (const std::invalid_argument& e) {
    cout << "Hata";
}

Burada stoi("abc") bir std::invalid_argument fırlatır; bu istisna catch bloğu tarafından yakalanır ve program çökmeden devam eder. #include <stdexcept> başlığı istisna türlerini getirir.

catch bloğu ve istisna türü

Her catch bloğu belirli bir istisna türünü yakalar. Tür, parantez içinde referans olarak bildirilir: catch (const std::exception& e). Bu biçim hem kopyalamayı önler hem de türetilmiş türleri temel türle yakalamanı sağlar.

try {
    throw std::runtime_error("yanlış");
} catch (const std::exception& e) {
    cout << e.what();
}

Burada std::runtime_error, std::exception'dan türetildiği için onun catch bloğu tarafından yakalanır. e.what() ise istisnanın açıklama dizesini döndürür.

Uygulama stoi hatasını yakala

#include <stdexcept> başlığını ekle. try bloğu içinde int n = stoi("abc"); çağrısı yap. catch (const std::invalid_argument& e) bloğu içinde cout << "Hata" << endl; yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
// stdexcept başlığını ekle
using namespace std;

int main() {
    // try ile stoi çağrısı yap, catch ile hatayı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;

int main() {
    try {
        int n = stoi("abc");
    } catch (const std::invalid_argument& e) {
        cout << "Hata" << endl;
    }
    return 0;
}

Beklenen çıktı

Hata

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 try bloğunda istisna fırlatıldığında ne olur?

  • catch bloğu çalışır Doğru cevap
  • Program çöker
  • try bloğu devam eder
  • Derleme hatasıdır

Açıklama: İstisna fırlatılınca try bloğu kesilir ve catch çalışır.

2 Boşluğu doldur: catch bloğu

Soru
try {
    throw std::runtime_error("x");
}
____ (const std::exception& e) {
    cout << e.what();
}
Cevap
try {
    throw std::runtime_error("x");
}
catch (const std::exception& e) {
    cout << e.what();
}

Açıklama: catch anahtar sözcüğü istisnayı yakalar.

3 Bloğu göreviyle eşleştir

Kavram Anlamı
try riskli kod
catch hatayı yakalar
throw istisna fırlatır

Başlangıç bölümündeki tüm dersler