Home » PHP » Perbedaan Error Handling Pada PHP: die () Vs trigger_error () Vs throw Exception

Perbedaan Error Handling Pada PHP: die () Vs trigger_error () Vs throw Exception

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Error Handling merupakan suatu penangnan kesalahan ketika terjadi error pada kodingan kita yang memiliki syntaxnya. Error handling default pada PHP cukup sederhana karena ketika terjadi error pada kode PHP kita, maka PHP akan memberikan nama file, nomor baris dan pesan yang menjelaskan kesalahan dikirim ke browser.

Di bawah ini kita akan membahas error handling yang biasanya ada pada PHP yaitu die() , trigger_error() dan throw Exception. Ketiga metode tersebut digunakan secara manual ketika ada error dan biasanya kita akan memperbaikinya dengan menggunakan satu dari ketiga metode tersebut. Berikut ini contohnya :

Error Handling die() atau exit()

$con = mysql_connect("localhost","root","password");

if (!$con) {
 die('Could not connect: ' . mysql_error());
}

Error Handling trigger_error()

if(!is_array($config) && isset($config)) {
        trigger_error('Error: config is not an array or is not set', E_USER_ERROR);
    }

Error Handling throw Exception

 if (!function_exists('curl_init')) {

      throw new Exception('need the CURL PHP extension. 
                           Recomplie PHP with curl');
    }

Kita akan bahas satu persatu error handling PHP yang ada di atas dengan penjelasan yang padat dan jelas, berikut ini penjelasannya :Pada Error Handling die() atau exit() tidak boleh di gunakan dalam kode produksi, karena hal itu mengangkut informasi yang tidak relevan kepada end-user , jadi ketika terjadi error maka end-user tidak dapat melakukan apapun saat peringatan “Cannot connect to database” ada.

1. Pada Error Handling trigger_error() kita dapat menyempurnakan error reporting dengan menggunakan tingkat error message yang berbeda dan kita bisa menyembunyikan error tersebut dari end-user degnan menggunakan set_error_handler(), jadi kita masih bisa tetap menampilkannya selama selama tahap pengujian.

2. Error Handling trigger_error() juga dapat menampilkan pesan non-fatal yang penting selama proses pengembangan agar dapat disembunyikan dalam sebuah kode produksi yang menggunakan error handling khusus. Kita bisa gunakan error handling ini untuk menampilkan kesalahan fatal seperti E_USER_ERROR yang tidak dapat dipulihkan. Ketika kita memicu salah satunya maka, eksekusi program akan berhenti pada saat itu juga. Maka dari itu untuk fatal errors Exceptions harus digunakan untuk dapat memiliki kontrol lebih besar terhadap program kita, seperti ini :

// Example (pseudo-code for db queries):

$db->query('START TRANSACTION');

try {
    while ($row = gather_data()) {
       $db->query('INSERT INTO `table` (`foo`,`bar`) VALUES(?,?)', ...);
    }
    $db->query('COMMIT');
} catch(Exception $e) {
    $db->query('ROLLBACK');
}

Pada contoh di atas, ada gather_data() yang hanya menggunakan E_USER_ERROR atau die() untuk melakukan INSERT sebelum pernyataan yang ada dan berhasil masuk ke dalam database atau bahkan kita tidak ingin, kita tetap memiliki kendali atas apa yang akan terjadi selanjutnya.

3. Error Handling throw Exception akan digunakan ketika ada titik kode kritis yang dapat membuat gagal dan kita ingin kode kita itu dapat pulih degnan multiple call-levels.

Singkatnya, pada style yang pertama kita gunakan untuk menghentikan skrip dan menampilkan beberapa info debugging untuk parse secara manual. Error handling die() ini bukanlah sepenuhnya sebuah error yang ada tetapi merupakan debugging yang dapat kita lakukan untuk melakukan parse secara manual. Error handling die() biasa digunakan untuk debugging saja dan tidak disarankan untuk produksi. Style yang kedua yaitu, Error Handling trigger_error() dapat memicu error pada mesin PHP yang akan ditangani sesuai dengan konfigurasi lingkungan PHP kita(untuk beberapa kasus ditunjukkan kepada user dan beberapa kasus lain hanya masuk ke file dan tidak menyimpannya sama sekali). Untuk style yang terakhir yaitu Error Handling throw Exception ini bukanlah sebuah error itu sendiri, tetapi akan diubah menjadi error jika kita tidak menangkapnya. Style yang ketiga ini merupakan cara terbaik untuk membuat exception atau pengecualian, karena kita dapat menangkap di bagian lain dari program dan melakukan error handling dengan cara apapun yang dapat kita sukai.

Sekian perbedaan dari ketiga metode error handling yang ada pada PHP. Semoga bermanfaat dan dapat digunakan dengan lebih baik lagi yaa!

You may also like