让die()住在生产环境中被认为是不好的做法吗?刚刚读过这篇文章http://www.phpfreaks.com/blog/or-die-must-die,其中作者对在生产环境中使用这种东西的人产生了影响。所以我不应该这样编码:
$connection = mysql_connect($db_host, $db_username, $db_password);
if (!$connection){
die ("Could not connect to the database.");
}
你如何编码?
答案 0 :(得分:3)
die()
是一个非常粗略的陈述......在开发阶段很有用(非常),我在生产阶段发现错误。
您应该分析,监控和记录致命错误,并显示足够的消息,例如“无法连接到服务器,请在几分钟内尝试或写信给admin@yourhost.com以通知问题”!
答案 1 :(得分:3)
每次出错都不会死,是吗?你的申请为什么要这样做?
正确的方法是拦截错误并以上下文相关的方式处理它们,例如
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);
}
}
答案 2 :(得分:1)
在富有成效的环境中,您不应该将有关系统的任何错误/信息暴露给外界。
重要的是,记录所有错误。如果您正在谈论网站,我会发送HTTP status 500
作为回复。