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 sadece diğer fonksiyonlar tarafından fırlatılan istisnaları yakalamak yerine, kendi kodunuzda bir hata oluştuğunu bildirmeniz gerekir. throw anahtar kelimesi, programınız bir sorun tespit ettiğinde manuel olarak bir istisna tetiklemenize olanak tanır.

İstisna olarak farklı türde değerler fırlatabilirsiniz - tam sayılar, dizeler veya hatta özel nesneler. İşte temel sözdizimi:

if (someErrorCondition) {
    throw "Error message";  // Bir dize sabiti fırlatır
}

throw kullandığınızda, program mevcut fonksiyonu yürütmeyi anında durdurur ve fırlatılan değeri işleyebilecek bir catch bloğu arar. Bu, özellikle girdiyi doğrulamak veya normal program yürütmesi sırasında oluşmaması gereken koşulları kontrol etmek için yararlıdır.

Geçersiz girdi tespit edildiğinde istisna fırlatılmasına dair 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 kelimesi, programlarınızda hataların ne zaman ve nasıl raporlanacağı üzerinde size kontrol sağlayarak, geçersiz koşullarla uğraşırken fonksiyonlarınızı daha sağlam ve öngörülebilir hale getirir.

challenge icon

Görev

Kolay

Geçersiz koşullar tespit edildiğinde istisnaları manuel olarak tetiklemek için throw anahtar kelimesini kullanarak girdi doğrulaması uygulayan bir program oluşturun. Bu görev, kendi fonksiyonlarınızda hataları bildirmek için throw ifadesini nasıl kullanacağınızı anlama düzeyinizi test edecektir.

Aşağıdaki girdiler sağlanacaktır:

  • Kullanıcının seçtiği kullanıcı adını temsil eden bir string username
  • Kullanıcının yaşını temsil eden bir tam sayı age

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

  1. Parametre olarak bir string ve bir tam sayı alan validateUser adında bir fonksiyon oluşturun
  2. Fonksiyonun içinde, kullanıcı adının boş olup olmadığını (uzunluğunun 0 olup olmadığını) kontrol edin
  3. Eğer kullanıcı adı boşsa, "Username cannot be empty" string değerini throw ile fırlatın
  4. Yaşın 13'ten küçük olup olmadığını kontrol edin
  5. Eğer yaş 13'ten küçükse, "Age must be at least 13" string değerini throw ile fırlatın
  6. Her iki doğrulama da geçerse, "User validation successful" yazdırın
  7. Ana fonksiyonda (main function), girdi değerleriyle validateUser fonksiyonunu çağırın
  8. Fonksiyonu çağırmak için bir try bloğu ve fırlatılan string istisnalarını ele almak için bir catch bloğu kullanın

Aşağıdaki tam çıktı formatını 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 fonksiyonu yürütmeyi hemen durdurduğunu ve eşleşen bir catch bloğu aradığını unutmayın. catch bloğu, fırlatılan string sabitlerini (string literals) ele almak için const char* tipini belirtmelidir. Eğer ilk doğrulama başarısız olursa, fonksiyon bir istisna fırlatacak ve ikinci koşulu kontrol etmeye devam etmeyecektir.

Kopya kağıdı

throw anahtar kelimesi, programınız bir sorun tespit ettiğinde istisnaları manuel olarak tetiklemenize olanak tanır:

if (someErrorCondition) {
    throw "Error message";  // Bir dize sabiti fırlatır
}

throw kullandığınızda, program mevcut fonksiyonu yürütmeyi anında durdurur ve fırlatılan değeri işleyebilecek bir catch bloğu arar.

Giriş doğrulaması için bir istisna fırlatma örneği:

void checkAge(int age) {
    if (age < 0) {
        throw "Age cannot be negative!";
    }
    std::cout << "Age is valid: " << age << std::endl;
}

İstisna olarak farklı türde değerler fırlatabilirsiniz - tam sayılar, dizeler veya özel nesneler. Fırlatılan dize sabitlerini işlemek için catch bloklarında const char* kullanın.

Kendin dene

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Girdiyi oku
    string username;
    int age;
    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