php – ob_start在发生错误时被中断
发布时间:2020-12-13 21:48:47 所属栏目:PHP教程 来源:网络整理
导读:所以ob_start()应该捕获输出,直到调用另一个缓冲函数,如ob_get_clean(),ob_get_contents(),ob_get_flush(). 但是当缓冲区读取器内部抛出异常时,它会通过停止读取并回显输出而不是继续捕获它来影响读取器.这是我想要防止的. 让我们说这是我的脚本: ?php erro
所以ob_start()应该捕获输出,直到调用另一个缓冲函数,如ob_get_clean(),ob_get_contents(),ob_get_flush().
但是当缓冲区读取器内部抛出异常时,它会通过停止读取并回显输出而不是继续捕获它来影响读取器.这是我想要防止的. 让我们说这是我的脚本: <?php error_reporting(0); try { ob_start(); echo "I don't wanna output this what so ever,so want to cache it in a variable with using ob_ functions"; $unlink = unlink('some file that does not exist'); if(!$unlink) throw new Exception('Something really bad happen.',E_ERROR); //throwing this exception will effect the buffer $output = ob_get_clean(); } catch(Exception $e) { echo "<br />Some error occured: " . $e->getMessage(); //print_r($e); } ?> 该脚本将输出: I don't wanna output this what so ever,so want to cache it in a variable with using ob_ functions Some error occurred: Something really bad happen. 什么时候打算打印 Some error occurred: Something really bad happen. 我做错了什么,有解决方案吗? 解决方法
我的猜测是,即使在catch块内,输出缓冲仍然有效.但是,脚本以活动输出缓冲结束,因此PHP会自动显示输??出缓冲区.
因此,您可以尝试在异常处理程序中调用ob_clean(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |