std::exception
- C++ kursu
- Başlangıç
- Ders 102/116
- 5 dk
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
#include <iostream>
#include <stdexcept>
using namespace std;
int main() {
// try içinde fırlat, catch ile mesajı yazdır
return 0;
}Örnek çözüm
#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ı
try {
throw std::runtime_error("x");
}
catch (const std::exception& e) {
cout << e.____();
}
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.