在一个SO问题上,我在这里问了一些我不确定的代码,有人回答说:“ BTW,那里的代码很糟糕:它经常使用错误抑制符号(@)。”
有什么不好的做法吗?具有以下内容:
$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>' : ''))