Menu
Coddy logo textTech

Bir İstisna Fırlatmak

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 55 / 68.

Bazen kodunuzda bir şeylerin ters gittiğini belirtmeniz ve normal yürütmeyi durdurmanız gerekir. throw anahtar kelimesi, manuel olarak bir istisna oluşturmanıza ve fırlatmanıza olanak tanıyarak, programınızın bir hata durumunu ne zaman ve neden ele alması gerektiği üzerinde size kontrol sağlar.

Bir exception fırlattığınızda, yeni bir Exception nesnesi oluşturursunuz ve ona neyin yanlış gittiğine dair açıklayıcı bir mesaj sağlarsınız. Bu exception, mevcut kod yürütmesini anında durduracak ve onu işlemek için bir catch bloğu arayacaktır.

<?php
function checkAge($age) {
    if ($age < 0) {
        throw new Exception("Age cannot be negative");
    }
    echo "Age is valid: " . $age;
}

try {
    checkAge(-5);
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>

throw ifadesi, sorunu açıklayan bir dize mesajı ilettiğiniz new Exception() sözdizimini gerektirir. Bu mesaj daha sonra catch bloğunuzdaki getMessage() yöntemi kullanılarak alınabilir, bu da neyin yanlış gittiğini anlamayı ve uygun şekilde yanıt vermeyi kolaylaştırır.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

İki girdi alacaksınız: bir fiyatı temsil eden bir sayı ve bir indirim yüzdesini temsil eden bir sayı. Her iki girdi de sayı olarak sağlanacaktır (fiyat ondalıklı olabilir ve indirim yüzdesi 0 ile 100 arasında bir tam sayı olacaktır).

Her iki girdiyi de okuyun ve iki parametre kabul eden calculateFinalPrice adında bir fonksiyon oluşturun: fiyat ve indirim yüzdesi. Bu fonksiyonun içinde, indirim yüzdesinin 100'den büyük veya 0'dan küçük olup olmadığını kontrol edin. Bu koşullardan herhangi biri doğruysa, "Invalid discount percentage" mesajıyla yeni bir Exception fırlatın. İndirim geçerliyse, indirimi uyguladıktan sonra nihai fiyatı hesaplayın ve döndürün.

Fonksiyonu sağlanan girdilerle çağırmak için bir try...catch bloğu kullanın. try bloğu içinde, fonksiyonu çağırın ve "Final price: " ifadesinin ardından hesaplanan nihai fiyatı yazdırın. catch bloğu içinde, getMessage() metodunu kullanarak "Error: " ifadesinin ardından istisna mesajını yazdırarak istisnayı ele alın.

Girdi formatı:

  • Birinci satır: Fiyatı temsil eden bir sayı (örnek: 100 veya 49.99)
  • İkinci satır: İndirim yüzdesini temsil eden bir tam sayı (örnek: 20 veya 150)

Beklenen çıktı:

  • İndirim geçerliyse: Final price: ve ardından indirimden sonraki hesaplanmış fiyat
  • İndirim geçersizse: Error: Invalid discount percentage

Kopya kağıdı

Manuel olarak istisnalar oluşturmak ve fırlatmak için throw anahtar kelimesini kullanın:

throw new Exception("Error message");

Bir istisna fırlatıldığında, normal yürütmeyi durdurur ve onu işlemek için bir catch bloğu arar:

<?php
function checkAge($age) {
    if ($age < 0) {
        throw new Exception("Age cannot be negative");
    }
    echo "Age is valid: " . $age;
}

try {
    checkAge(-5);
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>

İstisna mesajını almak için catch bloğundaki getMessage() yöntemini kullanın.

Kendin dene

<?php
// Girdileri oku
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));

// YAPILACAK: Kodunuzu aşağıya yazın
// calculateFinalPrice fonksiyonunu oluşturun
// Fonksiyonu çağırmak ve istisnaları işlemek için try...catch bloğunu kullanın
// Uygun çıktıyı yazdırın

?>
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 ve Akış bölümündeki tüm dersler