In una domanda SO ho chiesto qui su un codice di cui non ero sicuro, qualcuno ha risposto "BTW, codice orribile lì: usa molto il simbolo di soppressione degli errori (@)."
C'è una ragione 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 dell'errore, mostrerebbe comunque il tipico messaggio PHP di:
Avviso : mysqli :: mysqli (): php_network_getaddresses: getaddrinfo non riuscito: non è noto alcun host di questo tipo. in alcuni \ file \ percorsi su riga 6
così come "Errore del database".
L'errore di soppressione sempre è errato, e in tal caso, quale aspetto specifico di quanto sopra è male?
Aggiornamento: il codice 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 è accaduto in modo specifico (che la gente sembra suggerire come motivo per cui la soppressione degli errori è errata) è irrilevante.