【问题标题】:PHP catch a failed includePHP 捕获失败的包含
【发布时间】:2011-12-22 08:40:39
【问题描述】:

我正在尝试包含一个文件,如果该文件不存在/无法打开,则捕获它。我原以为简单的 try/catch 语句会起作用,但 PHP 似乎完全忽略了它,并且出错了。

有什么想法吗?我知道在 stackoverflow 上还有其他类似的问题,我见过它们,但似乎没有一个有正确的、有效的答案。

【问题讨论】:

    标签: php exception include try-catch


    【解决方案1】:

    由于include() 失败时返回false,只需检查它是否返回true,然后执行die() 之类的操作或显示错误。

    if (!include('page.php'))
       die('Error.');
    

    【讨论】:

    • 如果你要去die,你还不如直接使用require
    【解决方案2】:

    可以查看include的返回值是否失败:

    if((@include $filename) === false)
    {
        // handle error
    }
    

    您会注意到我包含了错误抑制运算符 (@) 以隐藏标准错误消息,使其不被显示。

    【讨论】:

    • 使用@是一个非常肮脏的解决方案
    • 我认为使用@,错误控制运算符非常好,如果您处理错误。如果配置打开了此类警告,它只是确保不输出讨厌的包含失败错误。
    • 是的,我想这样做的确切原因是能够处理错误;)
    猜你喜欢
    • 2011-07-28
    • 2015-06-12
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多