Na pytanie SO, które tu zadałem , na temat jakiegoś kodu, którego nie byłem pewien, ktoś odpowiedział: „BTW, okropny kod: często używa symbolu tłumiącego błędy (@)”.
Czy istnieje powód, dla którego jest to zła praktyka? Z takimi rzeczami jak:
$db=@new mysqli($db_info) or die('Database error');
, pozwala mi wyświetlić tylko niestandardowy komunikat o błędzie. Bez tłumienia błędów nadal wyświetlałby typowy komunikat PHP:
Ostrzeżenie : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo nie powiodło się: Żaden taki host nie jest znany. w ścieżce \ file \ w wierszu 6
a także „Błąd bazy danych”.
Czy eliminowanie błędów jest zawsze złe, a jeśli tak, to co konkretnie w powyższym jest złe?
Aktualizacja: faktyczny kod, którego używam to:
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>' : ''))
który usuwa wszystkie poprzednie dane wyjściowe i wyświetla komunikat o błędzie. Zatem fakt, że komunikat o błędzie nie zawiera szczegółowych informacji o tym, co się konkretnie wydarzyło (co ludzie sugerują jako przyczynę złego tłumienia błędów) jest nieistotny.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))