Menu
Coddy logo textTech

'finally' Bloğu

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

Bazen bir istisna oluşup oluşmadığına bakılmaksızın çalışan bir koda ihtiyaç duyarsınız. finally bloğu bu garantiyi sağlar - bir try...catch bloğu tamamlandıktan sonra her zaman çalışacak kodları içerir, bu da onu dosya kapatma veya veritabanı bağlantıları gibi temizleme işlemleri için mükemmel kılar.

finally bloğu tüm senaryolarda çalışır: try bloğu istisna olmadan başarıyla tamamlandığında, bir istisna fırlatılıp yakalandığında ve hatta bir istisna fırlatılıp yakalanmadığında bile. Bu güvenilirlik, önemli temizleme kodunun her zaman çalışmasını sağlamak için onu paha biçilemez kılar.

<?php
try {
    echo "Attempting operation...\n";
    // İstisna fırlatabilecek kod
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

finally bloğu, hem try hem de catch blokları tamamlandıktan sonra çalışarak temel temizleme kodları için tutarlı bir yer sağlar. Bu, yürütme sırasında ne olursa olsun betiğinizin kaynakları düzgün bir şekilde yönetmesini ve temiz bir durumu korumasını sağlar.

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 işlem türü ve bir sayı. İlk girdi, "divide" veya "multiply" olacak bir dizedir. İkinci girdi, işlemde kullanılacak bir sayıdır.

Her iki girdiyi de okuyun ve bir try...catch...finally bloğu oluşturun. try bloğunun içinde işlem türünü kontrol edin:

  • Eğer işlem "divide" ise, sayının sıfır olup olmadığını kontrol edin. Eğer sıfırsa, "Cannot divide by zero" mesajıyla yeni bir Exception fırlatın. Eğer sayı sıfır değilse, 100'ü sayıya bölün ve "Result: " ifadesinin ardından sonucu yazdırın.
  • Eğer işlem "multiply" ise, 100'ü sayı ile çarpın ve "Result: " ifadesinin ardından sonucu yazdırın.

catch bloğunda, getMessage() metodunu kullanarak "Error: " ifadesinin ardından istisna mesajını yazdırarak tüm istisnaları ele alın.

finally bloğunda, "Operation completed" yazdırın.

Girdi formatı:

  • Birinci satır: Bir işlem türü dizesi (divide veya multiply)
  • İkinci satır: Bir sayı (örnek: 5 veya 0 veya 2.5)

Beklenen çıktı:

  • İşlem başarılı olursa: Result: ve ardından hesaplanan değer, sonra yeni bir satırda Operation completed
  • Sıfıra bölme gerçekleşirse: Error: Cannot divide by zero, sonra yeni bir satırda Operation completed

Kopya kağıdı

finally bloğu, bir istisna oluşup oluşmadığına bakılmaksızın, bir try...catch bloğu tamamlandıktan sonra her zaman çalışan kodları içerir. Dosyaları veya veritabanı bağlantılarını kapatmak gibi temizleme işlemleri için mükemmeldir.

finally bloğu tüm senaryolarda çalışır:

  • try bloğu istisna olmadan başarıyla tamamlandığında
  • Bir istisna fırlatıldığında ve yakalandığında
  • Bir istisna fırlatıldığında ancak yakalanmadığında
<?php
try {
    echo "Attempting operation...\n";
    // İstisna fırlatabilecek kod
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

finally bloğu, hem try hem de catch blokları bittikten sonra yürütülür ve temel temizleme kodunun her zaman çalışmasını sağlar.

Kendin dene

<?php
// Girdileri oku
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// YAPILACAK: Kodunuzu aşağıya yazın
// İşlemi işlemek için bir try...catch...finally bloğu oluşturun

?>
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