Su una domanda SO che ho fatto qui su un codice di cui non ero sicuro, qualcuno ha risposto "BTW, codice orribile lì: usa molto il simbolo di soppressione dell'errore (@)".
C'è un motivo per cui questa è una cattiva pratica? Con cose come:
$db=@new mysqli($db_info) or die('Database error');
, mi consente di visualizzare solo un messaggio di errore personalizzato. Senza la soppressione degli errori, visualizzerebbe comunque il tipico messaggio PHP di:
Avvertenza : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo non riuscito: non è noto tale host. in alcuni \ file \ path alla riga 6
così come "Errore del database".
La soppressione degli errori è sempre negativa e, in caso affermativo, che cosa è specificamente negativo di quanto sopra?
Aggiornamento: il codice effettivo che sto usando è:
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>' : ''))
che rimuove tutto l'output precedente e visualizza un messaggio di errore. Quindi il fatto che il messaggio di errore non includa dettagli su ciò che è specificamente accaduto (che la gente sembra suggerire come un motivo per cui la soppressione degli errori è male) è irrilevante.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))