PHP:die()必须死吗?
让die()生活在生产环境中被认为是不好的做法吗?只是碰巧读了这篇文章,作者在文章中提到了在生产环境中使用这种东西的人。那么我不应该这样编码吗:PHP:die()必须死吗?,php,mysql,Php,Mysql,让die()生活在生产环境中被认为是不好的做法吗?只是碰巧读了这篇文章,作者在文章中提到了在生产环境中使用这种东西的人。那么我不应该这样编码吗: $connection = mysql_connect($db_host, $db_username, $db_password); if (!$connection){ die ("Could not connect to the database."); } 你是如何编码的?die()是一个非常粗略的陈述。。。在开发阶段很有用,但在生产阶
$connection = mysql_connect($db_host, $db_username, $db_password);
if (!$connection){
die ("Could not connect to the database.");
}
你是如何编码的?die()
是一个非常粗略的陈述。。。在开发阶段很有用,但在生产阶段我发现它错了
您应该分析、监视和记录致命错误,并显示足够的消息,如“无法连接到服务器,请在几分钟内尝试或写入”admin@yourhost.com通知问题“ 你不是每次犯错都会死,是吗。你的申请为什么要这样做
例如,正确的方法是拦截错误并以上下文相关的方式处理它们
try {
application goes here
$conn = mysql_connect(...)
if(!$conn)
throw ....
....
} catch(Exception $err) {
if(PRODUCTION) {
log error
say something nice
}
if(DEBUG) {
var_dump($err);
}
}
在一个高效的环境中,你永远不应该向外界暴露任何关于系统的错误/信息
重要的是,记录所有错误。如果你谈论的是一个网站,我会发送一个
HTTP status 500
作为回应。向最终用户显示你的数据库错误是不好的做法-这些错误应该以某种方式记录,并向你的用户显示一个一般性错误。顺便说一句,这是有史以来最好的主题标题!请看一个主观问题。为什么您更喜欢引发并捕获异常,而不是在if(!$conn)
条件下进行处理?Enrico,因为异常更适合打破程序的标准流程,并将控制权传递给错误处理代码。这也是一种更健壮的“早期崩溃”方法:如果您在任何地方都依赖if/else条件,那么您必须记住每次调用正确的函数来终止执行。