Section Artikel
Apa itu Exceptions?
Exceptions atau pengecualian adalah objek yang menjelaskan kesalahan atau perilaku tak terduga dari skrip PHP.
Exceptions diberikan oleh banyak fungsi dan kelas PHP.
Fungsi dan kelas yang ditentukan pengguna juga dapat menampilkan exceptions.
Exceptions adalah cara yang baik untuk menghentikan suatu fungsi jika menemukan data yang tidak dapat digunakan.
Pernyataan throw di Exceptions
Pernyataan throw
memungkinkan fungsi atau metode yang ditentukan pengguna untuk membuat exceptions. Ketika exceptions dilemparkan, kode yang mengikutinya tidak akan dijalankan.
Jika exceptions tidak tertangkap, kesalahan fatal akan terjadi dengan pesan “Uncaught Exception”.
Mari kita coba melempar exceptions tanpa menangkapnya:
Contoh :
<?php function divide($dividend, $divisor) { if($divisor == 0) { throw new Exception("Division by zero"); } return $dividend / $divisor; } echo divide(5, 0); ?>
Hasilnya akan terlihat seperti ini:
Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4
Pernyataan try… catch
Untuk menghindari kesalahan dari contoh di atas, kita dapat menggunakan pernyataan try … catch untuk menangkap exceptions dan melanjutkan proses.
Sintaksis
try{
kode yang dapat throw exceptions
} catch (Exception $e) {
kode yang berjalan saat exceptions tertangkap
}
Contoh:
Tampilkan pesan ketika pengecualian dilemparkan:
<?php function divide($dividend, $divisor) { if($divisor == 0) { throw new Exception("Pembagian dengan nol"); } return $dividend / $divisor; } try { echo divide(5, 0); } catch(Exception $e) { echo "Tidak dapat membagi.."; } ?> /*Output Tidak dapat membagi. */
Blok catch menunjukkan tipe exceptions apa yang harus ditangkap dan nama variabel yang dapat digunakan untuk mengakses exceptions. Pada contoh di atas, jenis exceptionsnya adalah Exception
dan nama variabelnya adalah $e
.
Pernytaan try… catch… finally
Pernyataan try… catch… finally
dapat digunakan untuk menangkap exceptions. Kode di blok finally
akan selalu berjalan terlepas dari apakah exceptions ditangkap atau tidak. Jika finally
ada, blok catch
adalah opsional.
Sintaksis
try {
kode yang dapat throw exceptions
} catch(Exception $e) {
kode yang berjalan saat exceptions tertangkap
} finally {
kode yang selalu berjalan terlepas dari apakah exception ditangkap
}
Contoh:
Tunjukkan pesan ketika pengecualian dilemparkan dan kemudian tunjukkan bahwa proses telah berakhir:
<?php function divide($dividend, $divisor) { if($divisor == 0) { throw new Exception("Pembagian dengan nol"); } return $dividend / $divisor; } try { echo divide(5, 0); } catch(Exception $e) { echo "Tidak dapat membagi. "; } finally { echo "Proses selesai."; } ?> /*Output Tidak dapat membagi. Proses selesai. */
Contoh:
Keluarkan string meskipun pengecualian tidak tertangkap:
<?php function divide($dividend, $divisor) { if($divisor == 0) { throw new Exception("Pembagian dengan nol"); } return $dividend / $divisor; } try { echo divide(5, 0); } finally { echo "PProses selesai."; } ?> /*Output Proses selesai. */
Objek Exceptions
Objek Exception berisi informasi tentang kesalahan atau perilaku tak terduga yang ditemui fungsi.
Sintaksis
new Exception(message, code, previous)
Nilai Parameter
Parameter | Deskripsi |
---|---|
message | Optional. String yang menjelaskan mengapa exception itu dilemparkan |
code | Optional.Integer yang dapat digunakan untuk membedakan exception ini dengan mudah dari exception lain yang berjenis sama |
previous | Optional. Jika exception ini dilemparkan ke blok catch dari exceptions lain, disarankan untuk meneruskan exception itu ke parameter ini |
Metode
Saat menangkap exception, tabel berikut menunjukkan beberapa metode yang bisa digunakan untuk mendapatkan informasi tentang exception:
Method | Deskripsi |
---|---|
getMessage() | Mengembalikan string yang menjelaskan mengapa exception itu dilemparkan |
getPrevious() | Jika exception ini dipicu oleh exceptions lain, metode ini mengembalikan exception sebelumnya. Jika tidak, maka itu mengembalikan null |
getCode() | Mengembalikan kode exceptions |
getFile() | Mengembalikan jalur lengkap file tempat exceptionsdilemparkan |
getLine() | Mengembalikan nomor baris dari baris kode yang memunculkan exceptions |
Contoh:
Keluaran informasi tentang pengecualian yang dilemparkan:
<?php function divide($dividend, $divisor) { if($divisor == 0) { throw new Exception("Division by zero", 1); } return $dividend / $divisor; } try { echo divide(5, 0); } catch(Exception $ex) { $code = $ex->getCode(); $message = $ex->getMessage(); $file = $ex->getFile(); $line = $ex->getLine(); echo "Exception thrown in $file on line $line: [Code $code] $message"; } ?> /*Output Exception thrown in /home/TwT0ln/prog.php on line 8: [Code 1] Division by zero */