Özet - İstisnalar
- C++ kursu
- Başlangıç
- Ders 105/116
- 5 dk
try/catch ve özel istisnayı birleştirerek bir banka hesap sınıfı yazarsın.
Özet: Banka hesabı
Bu özette try/catch, throw ve özel istisnayı birleştirerek küçük bir banka hesap sınıfı kuracağız. Account sınıfı deposit ve withdraw metotlarını içerir; bakiye yetersizse InsufficientFunds istisnası fırlatılır.
Adım şu: önce InsufficientFunds sınıfını std::exception'dan türet, sonra Account sınıfını balance üyesiyle tanımla. withdraw metodu, tutar bakiyeyi aşarsa istisna fırlatır; çağıran kod bunu try/catch ile yakalar ve e.what() ile mesajı okur. Böylece istisna araçlarını gerçek bir senaryoda birleştirmiş olursun.
Uygulama InsufficientFunds ve withdraw
#include <stdexcept> ekle. class InsufficientFunds : public std::exception tanımla; public: bloğunda const char* what() const noexcept override { return "yetersiz bakiye"; } yaz. main içinde try { throw InsufficientFunds(); } catch (const std::exception& e) { cout << e.what() << endl; } ekle.
Başlangıç kodu
#include <iostream>
#include <stdexcept>
using namespace std;
// InsufficientFunds sınıfını tanımla
int main() {
// try içinde fırlat, catch ile mesajı yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <stdexcept>
using namespace std;
class InsufficientFunds : public std::exception {
public:
const char* what() const noexcept override {
return "yetersiz bakiye";
}
};
int main() {
try {
throw InsufficientFunds();
} catch (const std::exception& e) {
cout << e.what() << endl;
}
return 0;
}Beklenen çıktı
yetersiz bakiye
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aracı göreviyle eşleştir
| Kavram | Anlamı |
|---|---|
try |
riskli işlem |
throw |
istisna fırlatır |
InsufficientFunds |
özel istisna |
2 withdraw metodu bakiye yetersizse ne yapmalı?
- Çökertir
- InsufficientFunds fırlatır Doğru cevap
- 0 döndürür
- Yoksayar
Açıklama: Yetersiz bakiyede InsufficientFunds fırlatılır.
3 Boşluğu doldur: türetme
class InsufficientFunds : public ____ {
public:
const char* what() const noexcept override;
};
class InsufficientFunds : public std::exception {
public:
const char* what() const noexcept override;
};
Açıklama: std::exception temel sınıf olarak kullanılır.