Trong một câu hỏi SO tôi đã hỏi ở đây về một số mã mà tôi không chắc chắn, có người đã trả lời "BTW, mã khủng khiếp ở đó: nó sử dụng biểu tượng triệt tiêu lỗi (@) rất nhiều."
Có một lý do tại sao điều này là thực hành xấu? Với những thứ như:
$db=@new mysqli($db_info) or die('Database error');
, nó cho phép tôi chỉ hiển thị một thông báo lỗi tùy chỉnh. Nếu không có lỗi, thì nó vẫn hiển thị thông báo PHP điển hình của:
Cảnh báo : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo không thành công: Không có máy chủ nào như vậy được biết đến. trong một số \ file \ path trên dòng 6
cũng như 'Lỗi cơ sở dữ liệu'.
Là lỗi triệt tiêu luôn luôn xấu, và nếu vậy, những gì cụ thể về những điều trên là xấu?
Cập nhật: mã thực tế mà tôi đang sử dụng là:
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>' : ''))
trong đó loại bỏ tất cả đầu ra trước đó và hiển thị một thông báo lỗi. Vì vậy, thực tế là thông báo lỗi không bao gồm chi tiết về những gì đã xảy ra cụ thể (mà mọi người dường như đang đề xuất là lý do tại sao việc khắc phục lỗi là xấu) là không liên quan.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))