Hata yönetimi
- C++ kursu
- Başlangıç
- Ders 22/116
- 6 dk
try/catch ile geçersiz girdileri güvenle yakalarsın.
Hata yönetimi
Bölme işleminde sıfıra bölme büyük bir sorundur: a / 0 tanımsızdır ve program çökebilir. Bu yüzden bölmeyi yapmadan önce b'nin sıfır olup olmadığını kontrol etmeliyiz.
C++'ta if ifadesi bir koşulu denetler. if (b == 0) yazdığında, b sıfırsa sonraki blok çalışır. Böylece hatayı yakalayıp güvenli bir değer dönebilirsin.
Bu projede sıfıra bölme durumunda 0 döneceğiz. Gerçek uygulamada bir hata mesajı yazdırabilir veya bir istisna fırlatabilirsin; ama şimdilik basit tutuyoruz.
if ile koşul
if ifadesi bir koşul doğruysa bir blok çalıştırır. Sözdizimi: if (koşul) { ... }. Koşul true ise blok işler, false ise atlanır.
Sıfır kontrolü için: if (b == 0) return 0;. Burada == eşitlik karşılaştırmasıdır (atama = ile karıştırma). b sıfırsa metot 0 döndürür ve bölme yapılmaz.
return metottan anında çıktığı için, sıfır kontrolünden sonraki return a / b; satırı yalnızca b sıfır değilse çalışır. Bu yapı erken çıkış (early return) olarak adlandırılır.
Uygulama Sıfır kontrolü ekle
divide metodunun gövdesini değiştir: önce if (b == 0) return 0; ile sıfır kontrolü ekle, sonra return a / b; ile normal bölmeyi yap. main zaten calc.divide(20, 4) ve calc.divide(20, 0) çağrılarıyla hazır; çıktı 5 ve 0 olmalı.
Başlangıç kodu
#include <iostream>
class Calculator {
public:
double add(double a, double b) { return a + b; }
double subtract(double a, double b) { return a - b; }
double multiply(double a, double b) { return a * b; }
double divide(double a, double b) { return a / b; }
};
int main() {
Calculator calc;
// Bölmede sıfır kontrolü ekle
std::cout << calc.divide(20, 4) << std::endl;
std::cout << calc.divide(20, 0) << std::endl;
return 0;
}Örnek çözüm
#include <iostream>
class Calculator {
public:
double add(double a, double b) { return a + b; }
double subtract(double a, double b) { return a - b; }
double multiply(double a, double b) { return a * b; }
double divide(double a, double b) {
if (b == 0) return 0;
return a / b;
}
};
int main() {
Calculator calc;
// Bölmede sıfır kontrolü ekle
std::cout << calc.divide(20, 4) << std::endl;
std::cout << calc.divide(20, 0) << std::endl;
return 0;
}Beklenen çıktı
5 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bölmede bölen sıfır olursa ne yapılmalı?
- Program çöker
- Sonuç 0 olur
- Önce kontrol edip 0 dönmek Doğru cevap
- Derleme hatası verilir
Açıklama: Önce if (b == 0) ile kontrol edip güvenli değer dönmeliyiz.
2 Sıfır kontrolü
if (____) return 0;
if (b == 0) return 0;
Açıklama: b == 0 ile sıfır kontrolü yapılır.
3 Hata yönetimi kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
if (b == 0) |
Sıfır kontrolü |
return 0; |
Güvenli değer |
== |
Eşitlik karşılaştırma |
early return |
Erken çıkış |