'try' ve 'catch' Blokları
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 49 / 56.
try ve catch blokları, kodunuz için bir güvenlik ağı oluşturmak üzere birlikte çalışır. Potansiyel olarak riskli kodları bir try bloğunun içine yerleştirirsiniz ve bir istisna oluşursa program, hatayı düzgün bir şekilde ele almak için ilgili catch bloğuna atlar.
İşte temel sözdizimi yapısı:
try {
// İstisna fırlatabilecek kod
} catch (exception_type e) {
// İstisnayı işleyecek kod
}Pratik bir örnek, dizeleri sayılara dönüştürmek için std::stoi kullanılmasını içerir; bu, dize sayısal olmayan karakterler içeriyorsa bir std::invalid_argument istisnası fırlatabilir:
try {
std::string input = "abc";
int number = std::stoi(input); // Bu bir istisna fırlatacaktır
std::cout << "Number: " << number << std::endl;
} catch (std::invalid_argument& e) {
std::cout << "Invalid input! Please enter a valid number." << std::endl;
}try bloğunda bir istisna oluştuğunda, program o bloktaki geri kalan kodun yürütülmesini hemen durdurur ve catch bloğuna atlar. Bu, programınızın çökmesini önler ve işler ters gittiğinde kullanıcılara anlamlı geri bildirimler sağlamanıza olanak tanır.
Görev
Kolaytry ve catch bloklarını kullanarak güvenli dizeden sayıya dönüştürmeyi gösteren bir program oluşturun. Bu görev, kullanıcı girişini dizelerden tam sayılara dönüştürürken oluşan istisnaları (exceptions) nasıl yöneteceğiniz konusundaki anlayışınızı test edecektir.
Aşağıdaki girdi sağlanacaktır:
- Geçerli bir tam sayıyı temsil edebilecek veya etmeyebilecek bir
userInputdizesi
Programınız şunları yapmalıdır:
- Dizeden tam sayıya dönüştürme işlemini
std::stoikullanarak birtrybloğu içine yerleştirin - Dönüştürme başarılı olursa, dönüştürülen sayıyı bir başarı mesajıyla birlikte yazdırın
- Dize sayısal olmayan karakterler içerdiğinde oluşan
std::invalid_argumentistisnalarını işlemek için bircatchbloğu kullanın - Catch bloğunda, girdinin geçersiz olduğunu belirten bir hata mesajı yazdırın
Aşağıdaki tam çıktı formatını kullanın:
Başarılı dönüştürme için:
Valid number: [converted_number]İstisna fırlatan geçersiz girdi için:
Error: Invalid inputstd::stoi fonksiyonunun, tam sayıya dönüştürülemeyen bir dizeyle karşılaştığında bir std::invalid_argument istisnası fırlatacağını unutmayın. try bloğu dönüştürme girişimini içermeli ve catch bloğu bu özel hatayı işlemek için istisna türünü std::invalid_argument& olarak belirtmelidir. Bir istisna oluştuğunda, program hemen try bloğundan eşleşen catch bloğuna atlayarak programın çökmesini önleyecektir.
Kopya kağıdı
İstisnaları güvenli bir şekilde işlemek için try ve catch bloklarını kullanın:
try {
// İstisna fırlatabilecek kod
} catch (exception_type e) {
// İstisnayı işleyecek kod
}std::stoi dizeden tam sayıya dönüştürme ile ilgili örnek:
try {
std::string input = "abc";
int number = std::stoi(input); // Bu bir istisna fırlatacaktır
std::cout << "Number: " << number << std::endl;
} catch (std::invalid_argument& e) {
std::cout << "Invalid input! Please enter a valid number." << std::endl;
}try bloğunda bir istisna oluştuğunda, program hemen ilgili catch bloğuna atlar; bu da çökmeleri önler ve hataların kontrollü bir şekilde ele alınmasını sağlar.
Kendin dene
#include <iostream>
#include <string>
using namespace std;
int main() {
// Girdiyi oku
string userInput;
cin >> userInput;
// YAPILACAK: Kodunuzu aşağıya yazın
// Dizeyi dönüştürmek için std::stoi ile try-catch bloklarını kullanın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri5Proje: Envanter Aracı
Proje KurulumuÖğe Ekleme ve Güncelleme8Temel Hata Yönetimi
İstisnalara Giriş'try' ve 'catch' Blokları'throw' Anahtar KelimesiFarklı İstisna TürleriGenel YakalayıcıÖzet - Güvenli Bölme3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme