Menggunakan Exception Kustom
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 57 dari 68.
Sekarang setelah kamu membuat class exception kustom sendiri, saatnya menggunakannya dalam praktik. Penggunaan exception kustom melibatkan dua langkah utama: melempar tipe exception spesifikmu saat terjadi masalah, lalu menangkap tipe exception spesifik tersebut untuk menanganinya dengan tepat.
Saat kamu melempar exception kustom, kamu menggunakan kata kunci throw yang sama, tetapi membuat instance dari class kustommu alih-alih class Exception umum. Ini membuat penanganan error-mu lebih tepat dan bermakna.
<?php
class InvalidEmailException extends Exception {}
function validateEmail($email) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidEmailException("Invalid email format: " . $email);
}
echo "Email is valid!";
}
?>Kekuatan sesungguhnya muncul saat kamu menangkap exception kustommu. Alih-alih menangkap Exception umum, kamu bisa menangkap InvalidEmailException khusus. Ini memungkinkan kamu menangani berbagai jenis error dengan cara yang berbeda, sehingga penanganan error-mu lebih terarah dan informatif.
<?php
try {
validateEmail("invalid-email");
} catch (InvalidEmailException $e) {
echo "Email error: " . $e->getMessage();
}
?>Pendekatan ini memberimu kendali yang tepat atas penanganan error, sehingga kamu dapat merespons berbagai jenis masalah dalam aplikasimu dengan cara yang berbeda.
Tantangan
MudahKamu akan menerima tiga input: string username, string password, dan angka panjang minimum password. Username tidak boleh kosong, dan password harus memenuhi persyaratan panjang minimum.
Buat class exception khusus bernama InvalidCredentialsException yang merupakan turunan dari class dasar Exception.
Buat fungsi bernama validateCredentials yang menerima tiga parameter: username, password, dan panjang minimum. Di dalam fungsi ini:
- Jika username kosong (string kosong), lempar
InvalidCredentialsExceptiondengan pesan"Username cannot be empty" - Jika panjang password kurang dari panjang minimum, lempar
InvalidCredentialsExceptiondengan pesan"Password must be at least X characters long"(dengan X adalah nilai panjang minimum) - Jika kedua validasi berhasil, cetak
"Credentials are valid"
Gunakan blok try...catch untuk memanggil fungsi dengan input yang diberikan. Di dalam blok catch, tangkap InvalidCredentialsException secara spesifik dan cetak "Validation error: " diikuti pesan exception menggunakan method getMessage().
Format input:
- Baris pertama: String yang mewakili username (contoh:
john_doeatau string kosong) - Baris kedua: String yang mewakili password (contoh:
pass123) - Baris ketiga: Integer yang mewakili panjang minimum password (contoh:
8)
Output yang diharapkan:
- Jika kredensial valid:
Credentials are valid - Jika username kosong:
Validation error: Username cannot be empty - Jika password terlalu pendek:
Validation error: Password must be at least X characters long(dengan X adalah panjang minimum)
Coba sendiri
<?php
// Baca input
$username = trim(fgets(STDIN));
$password = trim(fgets(STDIN));
$minLength = intval(fgets(STDIN));
// TODO: Tulis kodemu di bawah ini
// 1. Buat class InvalidCredentialsException
// 2. Buat fungsi validateCredentials
// 3. Gunakan blok try...catch untuk memanggil fungsi dan menangani exception
?>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