为什么要抑制PHP错误? [英] Why suppress PHP errors?

查看:79
本文介绍了为什么要抑制PHP错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道为什么您会抑制" PHP错误.我显然看到了错误所产生的额外警告行中的差异,但是抑制它是否很好?

I was wondering why you would "suppress" a PHP error. I obviously see the difference in the extra warning line that the error produces, but is it good to suppress it?

 Access denied for user 'user'@'localhost' (using password: YES) 

vs

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'user'@'localhost'       (using password: YES) in (deleted) on line 8
Access denied for user 'user'@'localhost' (using password: YES)

如果是这样,我应该养成在PHP程序中的MySQL查询开始时键入@的习惯吗?

If so, should I get into the habit of typing @ at the start of my MySQL queries in my PHP programs?

推荐答案

您应该积极不要养成抑制错误的习惯.错误在那里是有原因的.相反,请在您的代码中正确,防御地处理它们,并不断完善代码,直到错误消失.

You should positively NOT get into the habit of suppressing errors. The errors are there for a reason. Instead, handle them properly and defensively in your code, and keep refining your code until the errors are gone.

您应该执行以下操作:

$conn = mysql_connect($host, $user, $pass);

// Always test to see if your action/connection/whatever was successful
if (!$conn) {
  // something went wrong.  handle the error
  // Display a message for the user, write a message to `error_log()`, whatever's appropriate
}
else mysql_select_db($dbname);

在生产系统上,永远不要显示错误,因为这样可能会丢失代码和数据库的详细信息.而是在php.ini中或在运行时关闭display_errors:

On a production system, you should never display errors, since it risks giving up details of your code and database. Instead, turn display_errors off in php.ini, or at runtime:

// In development and production, make sure all errors are reported
error_reporting(E_ALL & E_STRICT);

// In development show all errors on screen so you handle them as they occur
ini_set('display_errors', 1);

// In production turn them off
ini_set('display_errors', 0);

事实上,使用@进行错误抑制是PHP不良做法的第二次投票

In fact, error suppression with @ is the second most voted for PHP bad practice in this classic question.

这篇关于为什么要抑制PHP错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆