Sistem Absensi Dan Laporan Penggajian

Cara Membuat dan Menjalankan Fungsi Pengecualian (Exception) pada pemograman PHP

Apa itu Pengecualian?

Dengan PHP 5 datang dengan cara berorientasi objek baru berurusan dengan kesalahan. Penanganan pengecualian digunakan untuk mengubah aliran normal eksekusi kode jika kesalahan ditentukan kondisi (biasa) terjadi. Kondisi ini disebut pengecualian.
Apa yang biasanya terjadi ketika pengecualian dipicu?
1.      Code resmi akan disimpan
2.      Eksekusi kode akan beralih ke yang telah ditetapkan (custom) fungsi  handler Pengecualian
3.      Tergantung pada situasi, handler kemudian dapat melanjutkan eksekusi dari code resmi disimpan, mengakhiri eksekusi script atau melanjutkan script dari lokasi yang berbeda dalam kode
Berikut ini metode penanganan kesalahan yang berbeda:
1.      Penggunaan dasar Pengecualian
2.      Membuat handler pengecualian kustom
3.      Multiple pengecualian
4.      Membuang pengecualian
5.      Menetapkan handler 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 tidak akan dieksekusi, dan PHP akan mencoba untuk menemukan pencocokan pada blok "catch". Jika Pengecualian tidak tertangkap, kesalahan fatal akan diterbitkan dengan "Exception Uncaught" pesan. Mari kita mencoba untuk melemparkan pengecualian tanpa penangkapan itu:
<?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

Untuk menghindari kesalahan dari contoh di atas, kita perlu membuat kode yang tepat untuk menangani pengecualian. Kode pengecualian yang tepat harus mencakup:
1.      Try - Fungsi menggunakan pengecualian harus berada dalam blok "Try" . Jika pengecualian tidak memicu, kode akan terus seperti biasa. Namun jika pengecualian memicu, eksepsi "thrown"
2.      Throw - ini adalah bagaimana Anda memicu pengecualian. Setiap " thrown " harus memiliki setidaknya satu "catch"
3.      Catch - sebuah blok "catch" 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
Penjelasan :
Kode di atas melempar pengecualian dan menangkap pengecualian tersebut:
1.      Fungsi  checkNum () dibuat memeriksa jika nomor lebih besar dari 1. Jika ya, eksepsi dilemparkan
2.      Fungsi checkNum () fungsi disebut dalam Blok "Try"
3.      Pengecualian dalam fungsi checkNum () dilemparkan
4.      Blok "Catch" mengambil pengecualian dan menciptakan objek ($ e) yang berisi informasi pengecualian
5.      Pesan kesalahan dari pengecualian bergema dengan memanggil $ e-> getMessage () dari objek pengecualian
Namun, "setiap Throw harus memiliki Catch" aturan adalah untuk mengatur penangan tingkat pengecualian atas untuk menangani kesalahan yang lolos.

Membuat Kostum Kelas Pengecualian
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. Kustom Kelas pengecualian 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 lama pengecualian dengan menampilkan fungsi pesan kesalahan (). 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 ().

Penjelasan:
Kode di atas melempar pengecualian dan menangkap dengan kelas kostum pengecualian :
1.      Kelas customException () dibuat sebagai perpanjangan dari kelas lama pengecualian. Dengan cara ini mewarisi semua metode dan properti dari kelas lama pengecualian
2.      Fungsi menampilkan pesan kesalahan ()  dibuat mengembalikan pesan kesalahan jika alamat e-mail tidak valid
3.      Variabel $ email diatur untuk string yang bukan alamat e-mail yang valid
4.      Blok "Try" dijalankan dan pengecualian dilemparkan karena alamat e-mail tidak valid
5.      Blok "Catch" menangkap pengecualian dan menampilkan pesan error

Multi pengecualian
Hal ini dimungkinkan untuk script untuk menggunakan beberapa pengecualian untuk memeriksa beberapa kondisi. Hal ini dimungkinkan untuk menggunakan beberapa blok if..else, switch, atau sarang beberapa pengecualian. Pengecualian ini dapat menggunakan kelas pengecualian 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 = "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);
  }
  //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();
}
?>

Penjelasan :
Kode di atas tes dua kondisi dan melempar perkecualian jika salah satu kondisi tidak terpenuhi:
1.      Class customException () dibuat sebagai perpanjangan dari kelas lama pengecualian. Dengan cara ini mewarisi semua metode dan properti dari kelas lama pengecualian
2.      Fungsi menampilkan pesan kesalahan () fungsi mengembalikan pesan kesalahan jika alamat e-mail tidak valid
3.      Variabel $ email diatur untuk string yang merupakan alamat e-mail yang valid, tapi mengandung string " example "
4.      Blok "Trya" dijalankan dan pengecualian tidak dilempar pada kondisi pertama
5.      Kondisi kedua memicu pengecualian karena e-mail berisi string " example "
6.      Blok "Catht" menangkap pengecualian dan menampilkan pesan kesalahan yang benar
Jika pengecualian dilemparkan adalah dari Class customException dan tidak ada menangkap customException, hanya menangkap dasar pengecualian, pengecualian akan ditangani di sana.

Re-Throwing Pengecualian
Kadang-kadang, ketika pengecualian dilemparkan, Anda mungkin ingin menanganinya berbeda dari cara standar. Hal ini dimungkinkan untuk membuang pengecualian untuk kedua kalinya dalam blok "catch". 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-ulang 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 = "someone@example.com";
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();
}
?>

Penjelasan :
Kode di atas tes jika email-address berisi string " example " di dalamnya, jika tidak, pengecualian kembali dilemparkan-:
1.      Class customException () dibuat sebagai perpanjangan dari kelas lama pengecualian. Dengan cara ini mewarisi semua metode dan properti dari kelas lama pengecualian
2.      Fungsi menampilkan pesan kesalahan ()dibuat mengembalikan pesan kesalahan jika alamat e-mail tidak valid
3.      Variabel $ email diatur untuk string yang merupakan alamat e-mail yang valid, tapi mengandung string " example "
4.      Blok "Catcha" berisi lain Blok "Try" untuk memungkinkan untuk kembali membuang pengecualian
5.      Pengecualian dipicu karena e-mail berisi string " example "
6.      Blok "Catch" menangkap pengecualian dan Re-Throwing "customException"
7.       "customException" ditangkap dan menampilkan pesan kesalahan

No comments:

Post a Comment