Sur une question SO que j'ai posée ici à propos d'un code dont je n'étais pas sûr, quelqu'un a répondu "BTW, code horrible là-bas: il utilise beaucoup le symbole de suppression d'erreur (@)."
Y a-t-il une raison pour laquelle c'est une mauvaise pratique? Avec des choses comme:
$db=@new mysqli($db_info) or die('Database error');
, cela me permet d'afficher uniquement un message d'erreur personnalisé. Sans suppression d'erreur, il afficherait toujours le message PHP typique de:
Avertissement : mysqli :: mysqli (): php_network_getaddresses: échec de getaddrinfo: aucun hôte de ce type n'est connu. dans un \ file \ path sur la ligne 6
ainsi que «Erreur de base de données».
La suppression des erreurs est-elle toujours mauvaise et, dans l'affirmative, qu'est-ce qui est spécifiquement mauvais dans ce qui précède?
Mise à jour: le code réel que j'utilise est:
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>' : ''))
qui supprime toutes les sorties précédentes et affiche un message d'erreur. Par conséquent, le fait que le message d'erreur ne contienne pas de détails sur ce qui s'est spécifiquement produit (ce que les gens semblent suggérer comme une raison pour laquelle la suppression des erreurs est mauvaise) n'est pas pertinent.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))