Menu
Coddy logo textTech

'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.

challenge icon

Görev

Kolay

Geç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 username dizesi (bu satır boş olabilir)
  • Kullanıcının yaşını temsil eden bir age tamsayısı

Programınız şunları yapmalıdır:

  1. Parametre olarak bir dize ve bir tamsayı alan, validateUser adlı bir işlev oluşturun
  2. İşlevin içinde kullanıcı adının boş olup olmadığını (uzunluğunun 0 olup olmadığını) kontrol edin
  3. Kullanıcı adı boşsa throw dizesini "Username cannot be empty" edin
  4. Yaşın 13'ten küçük olup olmadığını kontrol edin
  5. Yaş 13'ten küçükse throw dizesini "Age must be at least 13" edin
  6. Her iki doğrulama da başarılı olursa "User validation successful" yazdırın
  7. Ana işlevde, girdi değerleriyle validateUser işlevini çağırın
  8. İşlevi çağırmak için bir try bloğu ve atılan dize istisnalarını ele almak için bir catch bloğu kullanın

Aşağıdaki tam çıktı biçimini kullanın:

Başarılı doğrulama için:

User validation successful

Doğ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;
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online C++ derleyicisi