На один вопрос, который я задал здесь о некотором коде, в котором я не был уверен, кто-то ответил: «Кстати, ужасный код: он часто использует символ подавления ошибок (@)».
Есть ли причина, почему это плохая практика? С такими вещами, как:
$db=@new mysqli($db_info) or die('Database error');
, это позволяет мне отображать только пользовательское сообщение об ошибке. Без подавления ошибок он все равно будет отображать типичное сообщение PHP:
Предупреждение : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo не удалось: такой хост не известен. в какой-то \ файл \ путь в строке 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>' : ''))