Apa sih “Exception” ?
Sebuah exception adalah sebuah error yang bersifat logical ataupun berasal dari sistem yang terjadi pada waktu eksekusi script. Sebuah exception dapat di aktifkan oleh sistem ataupun oleh program itu sendiri. Exception handling adalah fitur baru yang terdapat pada PHP 5. Pada php digunakan try…catch untuk menghandle sebuah exception. Handling Exception adalah cara yang “elegan” dalam menangani kesalahan/error yang terjadi di sebuah program. Karena pada kenyataan tidak ada sebuah program yang bebas dari kesalahan. Oleh karena itu kita butuh cara yang ELEGAN untuk menangani kesalahan.
Contoh sederhana penggunaan error handling.
1 2 3 4 5 6 7 8 9 | try { if($error) { throw new Exception("Error String",Error Code); } } catch(Exception $e) { echo "Message : " . $e->getMessage(); echo "Code : " . $e->getCode(); } |
Pada contoh diatas, terdapat dua blok utama yaitu try {} dan catch() {}. Block try{} adalah area dimana kode kita diletakkan dan itu akan di eksekusi. jika terjadi sebuah exception maka code akan segera masuk ke blok catch. Untuk mengaktifkan sebuah exception digunakan keyword throw.
Class Exception
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Exception { protected $message; protected $code; protected $file; protected $line; private $string; private $trace; public function __construct($message = null, $code = 0); public function __toString(); final public function getCode(); final public function getMessage(); final public function getFile(); final public function getLine(); final public function getTrace(); final public function getTraceAsString(); final private __clone(); } |
Pada struktur kelas Exception dapat kita lihat bahwa hanya dua fungsi yang dapat di override: kostruktor dan __tostring(), sedangkan method lainnya berupa final. Pada construktor terdapat dua parameter yaitu error message dan kode error. Berikut ini contoh implementasi error handling.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class PelangganException extends Exception { public function __construct($message = null, $code = 0) { $message = "Terjadi error pada pelanggan : ".$message; parent::__construct($t_message, $code); } } function testException() { throw new CustomerException("Cuman test",101); } try { testException(); } catch(CustomerException $e) { echo "Error Message : " $e->getMessage(); echo "Error Code : " $e->getCode(); } |