Pada pertanyaan SO, saya bertanya di sini tentang beberapa kode yang saya tidak yakin, seseorang menjawab "BTW, kode mengerikan di sana: ia menggunakan simbol penekan kesalahan (@) banyak."
Apakah ada alasan mengapa ini merupakan praktik yang buruk? Dengan hal-hal seperti:
$db=@new mysqli($db_info) or die('Database error');
, itu memungkinkan saya untuk menampilkan hanya pesan kesalahan khusus. Tanpa penindasan kesalahan, maka masih akan menampilkan pesan PHP khas:
Peringatan : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo gagal: Tidak ada host yang dikenal. di beberapa \ file \ path pada baris 6
serta 'Kesalahan basis data'.
Apakah penindasan kesalahan selalu buruk, dan jika demikian, apa yang khususnya tentang hal di atas yang buruk?
Perbarui: kode aktual yang saya gunakan adalah:
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b><br />Error occurred on line <b>' . __LINE__ . '</b> of <b>' . __FILE__ . '</b>' : ''))
yang menghapus semua output sebelumnya dan menampilkan pesan kesalahan. Jadi fakta bahwa pesan kesalahan tidak termasuk rincian tentang apa yang terjadi secara spesifik (yang orang tampaknya sarankan sebagai alasan mengapa penindasan kesalahan buruk) tidak relevan.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))