'throw' Anahtar Kelimesi
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 50 / 56.
Bazen yalnızca diğer işlevler tarafından oluşturulan istisnaları yakalamak yerine, kendi kodunuzda bir hata meydana geldiğini belirtmeniz gerekir. throw anahtar sözcüğü, programınız bir sorun algıladığında bir istisnayı manuel olarak tetiklemenize olanak tanır.
İstisna olarak farklı türlerde değerler fırlatabilirsiniz - tamsayılar, dizeler veya hatta özel nesneler. Temel söz dizimi şöyledir:
if (someErrorCondition) {
throw "Error message"; // Bir dize değişmezi fırlatır
}throw kullandığınızda program, geçerli işlevi yürütmeyi hemen durdurur ve oluşturulan değeri işleyebilecek bir catch bloğu arar. Bu, özellikle girdiyi doğrulamak veya normal program yürütülmesi sırasında gerçekleşmemesi gereken koşulları kontrol etmek için kullanışlıdır.
Geçersiz input algılandığında exception oluşturmayla ilgili pratik bir örnek:
void checkAge(int age) {
if (age < 0) {
throw "Age cannot be negative!";
}
std::cout << "Age is valid: " << age << std::endl;
}throw anahtar sözcüğü, programlarınızda hataların ne zaman ve nasıl bildirileceği üzerinde kontrol sahibi olmanızı sağlar; bu da geçersiz koşullarla çalışırken işlevlerinizi daha sağlam ve öngörülebilir hâle getirir.
Görev
KolayGeçersiz koşullar algılandığında istisnaları manuel olarak tetiklemek için throw anahtar sözcüğünü kullanarak girdi doğrulaması gerçekleştiren bir program oluşturun. Bu görev, kendi işlevlerinizde hataları bildirmek için throw kullanımını anlayıp anlamadığınızı test edecektir.
Aşağıdaki girdiler sağlanacaktır:
- Kullanıcının seçtiği kullanıcı adını temsil eden bir
usernamedizesi (bu satır boş olabilir) - Kullanıcının yaşını temsil eden bir
agetamsayısı
Programınız şunları yapmalıdır:
- Parametre olarak bir dize ve bir tamsayı alan,
validateUseradlı bir işlev oluşturun - İşlevin içinde kullanıcı adının boş olup olmadığını (uzunluğunun 0 olup olmadığını) kontrol edin
- Kullanıcı adı boşsa
throwdizesini"Username cannot be empty"edin - Yaşın 13'ten küçük olup olmadığını kontrol edin
- Yaş 13'ten küçükse
throwdizesini"Age must be at least 13"edin - Her iki doğrulama da başarılı olursa
"User validation successful"yazdırın - Ana işlevde, girdi değerleriyle
validateUserişlevini çağırın - İşlevi çağırmak için bir
trybloğu ve atılan dize istisnalarını ele almak için bircatchbloğu kullanın
Aşağıdaki tam çıktı biçimini kullanın:
Başarılı doğrulama için:
User validation successfulDoğrulama hataları için:
Validation error: [error_message]throw kullandığınızda programın mevcut işlevi yürütmeyi hemen durdurduğunu ve eşleşen bir catch bloğu aradığını unutmayın. catch bloğu, atılan dize sabitlerini ele almak için const char* türünü belirtmelidir. İlk doğrulama başarısız olursa işlev bir istisna atar ve ikinci koşulu kontrol etmeye devam etmez.
Kendin dene
#include <iostream>
#include <string>
using namespace std;
int main() {
// Girdiyi oku
string username;
int age;
getline(cin, username);
cin >> age;
// TODO: Kodunuzu buraya yazın
// validateUser fonksiyonunu oluşturun ve doğrulama mantığını uygulayın
// İstisnaları işlemek için 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 EklemeKendi başına pratik yap: Online C++ derleyicisi