Penggunaan fungsi EXCEPTION. pada PHP

Pengecualian yang digunakan untuk mengubah aliran normal script jika terjadi kesalahan tertentu.

Apa itu Exception
Dengan PHP 5 datang dengan cara berorientasi objek baru berurusan dengan kesalahan.

Penanganan eksepsi digunakan untuk mengubah aliran normal eksekusi kode jika kesalahan tertentu (biasa) kondisi terjadi. Kondisi ini disebut pengecualian.

Ini adalah apa yang biasanya terjadi ketika sebuah pengecualian dipicu:

  • Kode negara saat ini disimpan
  • Eksekusi kode akan beralih ke yang telah ditetapkan (custom) fungsi handler pengecualian
  • Tergantung pada situasi, pawang kemudian dapat melanjutkan eksekusi dari kode negara yang disimpan, menghentikan eksekusi script atau melanjutkan script dari lokasi yang berbeda dalam kode

Kami akan menunjukkan metode penanganan kesalahan yang berbeda:

  • Penggunaan Dasar Pengecualian
  • Membuat handler pengecualian kustom
  • beberapa pengecualian
  • Re-melempar pengecualian
  • Mengatur penangan pengecualian tingkat atas

Catatan: Pengecualian hanya boleh digunakan dengan kondisi kesalahan, dan tidak boleh digunakan untuk melompat ke tempat lain dalam kode pada titik tertentu.

Penggunaan Dasar Pengecualian
Ketika eksepsi dilemparkan, kode berikut ini tidak akan dieksekusi, dan PHP akan mencoba untuk menemukan pencocokan “menangkap” blok.

Jika eksepsi tidak tertangkap, kesalahan fatal akan dikeluarkan dengan “Exception tertangkap” pesan.

Mari kita mencoba untuk melemparkan pengecualian tanpa menangkapnya:

<?php
//create function with an exception
function checkNum($number)
  {
  if($number>1)
    {
    throw new Exception(“Value must be 1 or below”);
    }
  return true;
  }

//trigger exception
checkNum(2);
?>

Kode di atas akan mendapatkan error seperti ini:

Fatal error: Uncaught exception ‘Exception’
with message ‘Value must be 1 or below’ in C:\webfolder\test.php:6
Stack trace: #0 C:\webfolder\test.php(12):
checkNum(28) #1 {main} thrown in C:\webfolder\test.php on line 6

Coba, melempar dan menangkap
Untuk menghindari kesalahan dari contoh di atas, kita perlu membuat kode yang tepat untuk menangani pengecualian.

Kode pengecualian yang tepat harus mencakup:

  • Coba – Sebuah fungsi menggunakan pengecualian harus berada dalam “mencoba” blok. Jika pengecualian tidak memicu, kode tersebut akan terus seperti biasa. Namun, jika pengecualian memicu, pengecualian “dilemparkan”
  • Lempar – Ini adalah bagaimana Anda memicu pengecualian. Setiap “membuang” harus memiliki setidaknya satu “menangkap”
  • Menangkap – A “menangkap” blok mengambil pengecualian dan menciptakan sebuah objek yang berisi informasi pengecualian

Mari kita mencoba untuk memicu pengecualian dengan kode yang valid:

<?php
//create function with an exception
function checkNum($number)
  {
  if($number>1)
    {
    throw new Exception(“Value must be 1 or below”);
    }
  return true;
  }

//trigger exception in a “try” block
try
  {
  checkNum(2);
  //If the exception is thrown, this text will not be shown
  echo ‘If you see this, the number is 1 or below’;
  }

//catch exception
catch(Exception $e)
  {
  echo ‘Message: ‘ .$e->getMessage();
  }
?>

Kode di atas akan mendapatkan error seperti ini:

Message: Value must be 1 or below

Contoh menjelaskan:
Kode di atas melempar pengecualian dan menangkap itu:

  1. The checkNum () fungsi dibuat. Ia memeriksa jika nomor lebih besar dari 1. Jika ya, eksepsi dilemparkan
  2. The checkNum () fungsi disebut dalam “mencoba” block
  3. Pengecualian dalam checkNum () fungsi dilemparkan
  4. The “menangkap” blok retrives pengecualian dan menciptakan objek ($ e) berisi informasi pengecualian
  5. Pesan kesalahan dari pengecualian bergema dengan menelepon $ e-> getMessage () dari objek pengecualian

Namun, salah satu cara untuk berkeliling “setiap lemparan harus memiliki menangkap” aturan adalah untuk mengatur penangan pengecualian tingkat atas untuk menangani kesalahan yang lolos.

Membuat Kelas Kustom Exception
Membuat handler pengecualian kustom cukup sederhana. Kami hanya membuat kelas khusus dengan fungsi yang dapat dipanggil ketika pengecualian terjadi di PHP. Kelas harus menjadi perpanjangan dari kelas pengecualian.

Kelas pengecualian kustom mewarisi sifat dari kelas pengecualian PHP dan Anda dapat menambahkan fungsi kustom untuk itu.

Mari kita membuat kelas pengecualian:

<?php
class customException extends Exception
  {
  public function errorMessage()
    {
    //error message
    $errorMsg = ‘Error on line ‘.$this->getLine().’ in ‘.$this->getFile()
    .’: <b>’.$this->getMessage().'</b> is not a valid E-Mail address’;
    return $errorMsg;
    }
  }

$email = “someone@example…com”;

try
  {
  //check if
  if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
    {
    //throw exception if email is not valid
    throw new customException($email);
    }
  }

catch (customException $e)
  {
  //display custom message
  echo $e->errorMessage();
  }
?>

Kelas baru adalah salinan dari kelas pengecualian tua dengan penambahan errorMessage ( ) function . Karena itu adalah salinan dari kelas lama , dan mewarisi properti dan metode dari kelas lama , kita dapat menggunakan metode kelas pengecualian seperti getline ( ) dan getFile ( ) dan getMessage ( ) .

Contoh menjelaskan :
Kode di atas melempar pengecualian dan menangkap dengan kelas pengecualian kustom :

  • The customException ( ) class dibuat sebagai perpanjangan dari kelas pengecualian tua . Dengan cara ini mewarisi semua metode dan properti dari kelas pengecualian tua
  • The errorMessage ( ) fungsi dibuat . Fungsi ini mengembalikan pesan kesalahan jika alamat e -mail tidak valid
  • Variabel email $ diatur ke string yang bukan alamat e – mail yang valid
  • The ” mencoba ” blok dijalankan dan eksepsi dilemparkan karena alamat e -mail tidak valid
  • The ” menangkap” blok menangkap pengecualian dan menampilkan pesan kesalahan

beberapa Pengecualian
Hal ini dimungkinkan untuk script untuk menggunakan beberapa pengecualian untuk memeriksa beberapa kondisi .

Hal ini dimungkinkan untuk menggunakan beberapa jika .. lain blok , switch , atau sarang beberapa pengecualian . Pengecualian ini dapat menggunakan kelas eksepsi yang berbeda dan kembali pesan kesalahan yang berbeda :

<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = ‘Error on line ‘.$this->getLine().’ in ‘.$this->getFile()
.’: <b>’.$this->getMessage().'</b> is not a valid E-Mail address’;
return $errorMsg;
}
}

$email = “”;

try
  {
  //check if
  if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
    {
    //throw exception if email is not valid
    throw new customException($email);
    }
  //check for “example” in mail address
  if(strpos($email, “example”) !== FALSE)
    {
    throw new Exception(“$email is an example e-mail”);
    }
  }

catch (customException $e)
  {
  echo $e->errorMessage();
  }

catch(Exception $e)
  {
  echo $e->getMessage();
  }
?>

Contoh menjelaskan:
Kode di atas tes dua kondisi dan melempar perkecualian jika salah satu kondisi tidak terpenuhi:

  1. The customException () class dibuat sebagai perpanjangan dari kelas pengecualian tua. Dengan cara ini mewarisi semua metode dan properti dari kelas pengecualian tua
  2. The errorMessage () fungsi dibuat. Fungsi ini mengembalikan pesan kesalahan jika alamat e-mail tidak valid
  3. Variabel $ email diatur ke string yang merupakan alamat e-mail yang valid, tetapi berisi string “contoh”
  4. The “mencoba” blok dijalankan dan pengecualian tidak dilempar pada kondisi pertama
  5. Kondisi kedua memicu pengecualian karena e-mail berisi string “contoh”
  6. The “menangkap” blok menangkap pengecualian dan menampilkan pesan kesalahan yang benar

Jika pengecualian dilemparkan adalah dari customException kelas dan tidak ada customException menangkap, hanya menangkap dasar pengecualian, pengecualian akan ditangani di sana.

Re-melemparkan Pengecualian
Kadang-kadang, ketika eksepsi dilemparkan, Anda mungkin ingin menanganinya berbeda dari cara standar. Hal ini dimungkinkan untuk melemparkan pengecualian untuk kedua kalinya dalam “menangkap” blok.

Sebuah skrip harus menyembunyikan kesalahan sistem dari pengguna. Kesalahan sistem mungkin penting untuk coder, tetapi tidak menarik bagi pengguna. Untuk membuat segalanya lebih mudah bagi pengguna Anda dapat membuang-kembali pengecualian dengan pesan user friendly:

<?php
class customException extends Exception
  {
  public function errorMessage()
    {
    //error message
    $errorMsg = $this->getMessage().’ is not a valid E-Mail address.’;
    return $errorMsg;
    }
  }

$email = “”;

try
  {
  try
    {
    //check for “example” in mail address
    if(strpos($email, “example”) !== FALSE)
      {
      //throw exception if email is not valid
      throw new Exception($email);
      }
    }
  catch(Exception $e)
    {
    //re-throw exception
    throw new customException($email);
    }
  }

catch (customException $e)
  {
  //display custom message
  echo $e->errorMessage();
  }
?>

Contoh menjelaskan:
Kode di atas tes jika email-address berisi string “contoh” di dalamnya, jika tidak, pengecualian tersebut kembali dilemparkan:

  1. The customException () class dibuat sebagai perpanjangan dari kelas pengecualian tua. Dengan cara ini mewarisi semua metode dan properti dari kelas pengecualian tua
  2. The errorMessage () fungsi dibuat. Fungsi ini mengembalikan pesan kesalahan jika alamat e-mail tidak valid
  3. Variabel $ email diatur ke string yang merupakan alamat e-mail yang valid, tetapi berisi string “contoh”
  4. The “mencoba” blok berisi “mencoba” blok lain untuk membuatnya mungkin untuk kembali membuang-pengecualian
  5. Pengecualian dipicu karena e-mail berisi string “contoh”
  6. The “menangkap” blok menangkap pengecualian dan re-melempar “customException”
  7. The “customException” tertangkap dan menampilkan pesan kesalahan

Jika pengecualian tidak tertangkap dalam arus “mencoba” blok, ia akan mencari blok catch pada “tingkat yang lebih tinggi”.

Mengatur Top Level Exception Handler
The set_exception_handler () fungsi menetapkan fungsi yang ditetapkan pengguna untuk menangani semua pengecualian tertangkap.

<?php
function myException($exception)
{
echo “<b>Exception:</b> ” , $exception->getMessage();
}

set_exception_handler(‘myException’);

throw new Exception(‘Uncaught Exception occurred’);
?>

Output dari kode di atas harus sesuatu seperti ini:

pengecualian: Uncaught Exception occurred

Dalam kode di atas tidak ada “menangkap” blok. Sebaliknya, handler pengecualian tingkat atas dipicu. Fungsi ini harus digunakan untuk menangkap pengecualian tidak tertangkap.
Aturan untuk pengecualian

  • Kode dapat dikelilingi dalam blok try, untuk membantu menangkap pengecualian potensial
  • Masing-masing mencoba blok atau “membuang” harus memiliki minimal satu sesuai blok catch
  • Beberapa blok catch dapat digunakan untuk menangkap kelas yang berbeda dari pengecualian
  • Pengecualian dapat dibuang (atau re-dilemparkan) dalam blok catch dalam blok try

Sebuah aturan sederhana: Jika Anda melemparkan sesuatu, Anda harus menangkapnya.

Apa itu exception pada PHP?

Exception secara bahasa berarti pengecualian. Sedangkan secara istilah di dalam PHP, ia adalah sebuah perubahan alur program dari kondisi normal ke kondisi tertentu (atau pengecualian tertentu) jika terjadi suatu error (exception).

Sebutkan apa saja yang bisa dilakukan untuk penanganan exception?

Terdapat dua penanganan exception yaitu: • Menangani sendiri exception tersebut. dan melemparkannya (throw) keluar agar ditangani oleh kode yang memanggil method(method yang didalamnya terdapat exception) tersebut.

Bagaimana cara penanganan error pada PHP?

Di antara cara penanganan error yang bisa kita lakukan adalah: Menggunakan fungsi die() Memusatkan penanganan error pada satu fungsi khusus. Menggunakan exception.

Versi PHP manakah yang memperkenalkan try catch exception?

Beberapa exception yang ada di PHP contohnya adalah try dan catch. Exception diperkenalkan di PHP versi 5, ketika penanganan kesalahan standar terbukti tidak cukup untuk kasus-kasus tertentu. Fungsi utama yang digunakan untuk menangani Exception adalah PHP try catch and throw.