Melempar Exception
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 55 dari 68.
Terkadang kamu perlu memberi tanda bahwa ada sesuatu yang salah dalam kodemu dan menghentikan eksekusi normal. Kata kunci throw memungkinkan kamu membuat dan melempar exception secara manual, sehingga kamu dapat mengendalikan kapan dan mengapa programmu harus menangani kondisi error.
Saat kamu melempar exception, kamu membuat object Exception baru dan memberinya pesan deskriptif tentang hal yang salah. Exception ini akan langsung menghentikan eksekusi kode saat ini dan mencari blok catch untuk menanganinya.
<?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();
}
?>Pernyataan throw memerlukan sintaks new Exception(), dengan memberikan pesan string yang menjelaskan masalahnya. Pesan ini nantinya dapat diambil menggunakan method getMessage() di dalam blok catch, sehingga kamu lebih mudah memahami apa yang salah dan merespons dengan tepat.
Tantangan
MudahKamu akan menerima dua input: angka yang mewakili harga dan angka yang mewakili persentase diskon. Kedua input akan diberikan sebagai angka (harga bisa berupa desimal, dan persentase diskon berupa bilangan bulat antara 0 dan 100).
Baca kedua input dan buat fungsi bernama calculateFinalPrice yang menerima dua parameter: harga dan persentase diskon. Di dalam fungsi ini, periksa apakah persentase diskon lebih dari 100 atau kurang dari 0. Jika salah satu kondisi terpenuhi, lempar Exception baru dengan pesan "Invalid discount percentage". Jika diskonnya valid, hitung harga akhir setelah diskon diterapkan, lalu kembalikan nilainya.
Gunakan blok try...catch untuk memanggil fungsi dengan input yang diberikan. Di blok try, panggil fungsi dan cetak "Final price: " diikuti harga akhir yang dihitung. Di blok catch, tangani exception dengan mencetak "Error: " diikuti pesan exception menggunakan method getMessage().
Format input:
- Baris pertama: Angka yang mewakili harga (contoh:
100atau49.99) - Baris kedua: Bilangan bulat yang mewakili persentase diskon (contoh:
20atau150)
Output yang diharapkan:
- Jika diskon valid:
Final price:diikuti harga setelah diskon dihitung - Jika diskon tidak valid:
Error: Invalid discount percentage
Coba sendiri
<?php
// Baca input
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO: Tulis kodemu di bawah ini
// Buat fungsi calculateFinalPrice
// Gunakan blok try...catch untuk memanggil fungsi dan menangani pengecualian
// Cetak output yang sesuai
?>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