'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.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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 birExceptionfı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 (
divideveyamultiply) - İkinci satır: Bir sayı (örnek:
5veya0veya2.5)
Beklenen çıktı:
- İşlem başarılı olursa:
Result:ve ardından hesaplanan değer, sonra yeni bir satırdaOperation completed - Sıfıra bölme gerçekleşirse:
Error: Cannot divide by zero, sonra yeni bir satırdaOperation 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:
trybloğ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
?>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
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması5Öğrenci Not Defteri
Proje Kurulumu: Veri YapısıYeni Öğrenci EklemeÖğrenciye Not EklemeÖğrenci Ortalamasını HesaplamaEn Başarılı Öğrenciyi BulmaKarne Oluşturma8Hata ve İstisna Yönetimi
PHP Hatalarını Anlamak'try...catch' Bloğu'finally' BloğuBir İstisna FırlatmakÖzel Bir İstisna OluşturmaÖzel Bir İstisna KullanmaÖzet: Girdi Doğrulama3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu Sıralama