Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:die()必须死吗?_Php_Mysql - Fatal编程技术网

PHP: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()是一个非常粗略的陈述。。。在开发阶段很有用,但在生产阶

让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条件,那么您必须记住每次调用正确的函数来终止执行。