CodeBlanks Logo Icon CodeBlanks

std::exception

std::exception ve what() yöntemini öğrenirsin.

std::exception temel tür

std::exception, C++ standart istisna hiyerarşisinin temel türüdür. runtime_error, invalid_argument, out_of_range gibi türlerin hepsi bu sınıftan türetilmiştir. Bu sayede tek bir catch bloğuyla tüm standart istisnaları yakalayabilirsin.

catch (const std::exception& e) {
    cout << e.what();
}

Burada e.what() istisnanın açıklama dizesini döndürür. Temel tür referansıyla yakalamak, kopyalamayı önler ve türetilmiş türlerin özelliklerini kaybetmeden yakalanmasını sağlar.

what() metodunun kullanımı

what() metodu istisnanın nedenini açıklayan bir dize işaretçisi döndürür. Bu dize, istisna kurucusuna verilen metindir. Hata ayıklama ve kullanıcı bildirimi için yararlıdır.

try {
    throw std::runtime_error("dosya bulunamadi");
} catch (const std::exception& e) {
    cout << "Hata: " << e.what() << endl;
}

Burada e.what() dizesi "dosya bulunamadi" olur. Bu desen, kullanıcıya neyin yanlış gittiğini net bir biçimde bildirmenin standart yoludur.

Uygulama what() ile mesajı yazdır

#include <stdexcept> ekle. try bloğu içinde throw std::runtime_error("dosya bulunamadi"); yaz. catch (const std::exception& e) bloğu içinde cout << e.what() << endl; ile mesajı yazdır.

Başlangıç kodu

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

int main() {
    // try içinde fırlat, catch ile mesajı yazdır
    return 0;
}

Örnek çözüm

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

int main() {
    try {
        throw std::runtime_error("dosya bulunamadi");
    } catch (const std::exception& e) {
        cout << e.what() << endl;
    }
    return 0;
}

Beklenen çıktı

dosya bulunamadi

Soru ve cevaplar

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

1 std::exception sınıfının açıklama dizesini veren metod ne?

  • message()
  • why()
  • what() Doğru cevap
  • text()

Açıklama: what() açıklama dizesini döndürür.

2 İstisna türünü senaryosuyla eşleştir

Kavram Anlamı
runtime_error çalışma zamanı
invalid_argument geçersiz giriş
out_of_range sınır aşımı

3 Boşluğu doldur: what() çağrısı

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

Açıklama: e.what() istisna mesajını döndürür.

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