На запитання ТА, який я запитав тут про якийсь код, про який я не був упевнений, хтось відповів "BTW, жахливий код там: він дуже часто використовує символ придушення помилки (@)".
Чи є причина, чому це погана практика? З такими речами, як:
$db=@new mysqli($db_info) or die('Database error');
, це дозволяє мені відображати лише власне повідомлення про помилку. Без придушення помилок, воно все одно відображатиме типове повідомлення PHP:
Попередження : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo не вдалося: Такого хоста не відомо. у деяких \ file \ шлях у рядку 6
а також "Помилка бази даних".
Чи придушення помилок завжди погано, і якщо так, то конкретно про вищезазначене погано?
Оновлення: фактичний код, який я використовую:
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>' : ''))
який видаляє всі попередні висновки та відображає повідомлення про помилку. Тому той факт, що повідомлення про помилку не містить деталей про те, що конкретно сталося (що, здається, люди вважають причиною придушення помилок, є поганим) не має значення.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))