【发布时间】:2013-07-12 06:40:31
【问题描述】:
所以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.
我做错了什么,有解决办法吗?
【问题讨论】:
-
尝试将
ob_start()移出try...catch块。 -
@vinodadhikary 感谢您的评论,这可能有效,但也会导致错误消息被缓冲。我不希望这种情况发生。