Home » PHP » Exceptions di PHP – Kode dan Contohnya

Exceptions di PHP – Kode dan Contohnya

by Hanifah Nurbaeti
by Hanifah Nurbaeti

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 errorUncaught 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

ParameterDeskripsi
messageOptional. String yang menjelaskan mengapa exception itu dilemparkan
codeOptional.Integer yang dapat digunakan untuk membedakan exception ini dengan mudah dari exception lain yang berjenis sama
previousOptional. 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:

MethodDeskripsi
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
  */

You may also like