我正在写这本书,我发现了一个意想不到的情况。
这本书说,在处理 PHP/HTML 混合文件时,如果我在没有 ob 缓冲区的情况下使用 PHP try/catch,并且如果文件中间某处出现错误,则 PHP 引擎将无法访问catch{} 行,因为一些输出已经发送到浏览器。然后书上说这种情况可以通过使用ob_start()、ob_end_clean() 和 ob_end_flush() 来解决
然而,当我使用本书的示例代码时,try/catch 工作得很好,没有ob 缓冲区的东西。说得很好,我的意思是如果出现异常,可以毫无问题地到达并执行 catch{} 行。
我用一个 Linode VPS 进行测试,PHP 版本是 5.3.2。我用一些普通的 Linode 脚本设置了 VPS。
这是为什么?:)