Blok 'finally'
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 54 dari 68.
Terkadang kamu memerlukan kode yang tetap dijalankan, terlepas dari apakah terjadi exception atau tidak. Blok finally memberikan jaminan ini: blok tersebut berisi kode yang akan selalu dijalankan setelah blok try...catch selesai, sehingga cocok untuk operasi pembersihan seperti menutup file atau koneksi database.
Blok finally dijalankan dalam semua skenario: saat blok try berhasil tanpa pengecualian, saat pengecualian dilempar dan ditangkap, bahkan saat pengecualian dilempar tetapi tidak ditangkap. Keandalan ini membuatnya sangat berharga untuk memastikan kode pembersihan yang penting selalu dijalankan.
<?php
try {
echo "Attempting operation...\n";
// Kode yang mungkin melempar exception
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
} finally {
echo "Cleanup completed.\n";
}
?>Blok finally dijalankan setelah blok try dan catch selesai, sehingga menyediakan tempat yang konsisten untuk kode pembersihan penting. Ini memastikan skripmu menangani resource dengan benar dan mempertahankan keadaan yang bersih, apa pun yang terjadi selama eksekusi.
Tantangan
MudahKamu akan menerima dua input: tipe operasi dan sebuah angka. Input pertama adalah string yang berupa "divide" atau "multiply". Input kedua adalah angka yang akan digunakan dalam operasi.
Baca kedua input dan buat blok try...catch...finally. Di dalam blok try, periksa tipe operasinya:
- Jika operasinya adalah
"divide", periksa apakah angkanya nol. Jika nol, lemparExceptionbaru dengan pesan"Cannot divide by zero". Jika angkanya bukan nol, hitung 100 dibagi angka tersebut dan cetak"Result: "diikuti hasilnya. - Jika operasinya adalah
"multiply", hitung 100 dikalikan angka tersebut dan cetak"Result: "diikuti hasilnya.
Di blok catch, tangani exception apa pun dengan mencetak "Error: " diikuti pesan exception menggunakan method getMessage().
Di blok finally, cetak "Operation completed".
Format input:
- Baris pertama: String tipe operasi (berupa
divideataumultiply) - Baris kedua: Angka (contoh:
5atau0atau2.5)
Output yang diharapkan:
- Jika operasi berhasil:
Result:diikuti nilai hasil perhitungan, laluOperation completedpada baris baru - Jika terjadi pembagian dengan nol:
Error: Cannot divide by zero, laluOperation completedpada baris baru
Coba sendiri
<?php
// Baca input
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));
// TODO: Tulis kodemu di bawah ini
// Buat blok try...catch...finally untuk menangani operasi
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist5Buku Nilai Siswa
Penyiapan Proyek: Struktur DataMenambahkan Siswa BaruMenambahkan Nilai untuk SiswaMenghitung Nilai Rata-Rata SiswaMenemukan Siswa dengan Nilai TertinggiMembuat Rapor8Penanganan Error dan Exception
Memahami Error PHPBlok 'try...catch'Blok 'finally'Melempar ExceptionMembuat Exception KustomMenggunakan Exception KustomRingkasan: Validasi input3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online