Re: Throwing an exception seems to defeat output buffering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Output buffer is flushed at the end of script. When you throw that exception 
in try block, this command: exit( 'Contents: ' . ob_get_clean()); never 
executes and it continues to catch block where you are outputing exception 
message, and it is added to the buffer, then the script ends and buffer 
flushes.

=======================
"Leif Wickland" <leifwickland@xxxxxxxxx> pí¹e v diskusním pøíspìvku 
news:c5b9ee2c0902022202v6e2a071emfb062aa868ed7fa8@xxxxxxxxxxxxxxxxx
>I would expect that if I turn on output buffering, echo something,
> throw an exception,
> and catch the exception, nothing will have been actually output.  That
> doesn't seem
> to be the case.  Throwing an exception seems to defeat output buffering.
>
> In the following code, I would not expect to see the <h1>, but I do.
>
>
>
> <?
> try {
>    ob_start();
>    echo '<h1>You should not see this!</h1>';
>    throw new Exception('<h2>This should be the first output.</h2>');
>    exit( 'Contents: ' . ob_get_clean());
> }
> catch (Exception $ex) {
>    exit('<h2>Exception:</h2>' . $ex->getMessage());
> }
>
>
>
> I'm exercising that code on PHP 5.2.4 and 5.2.8.
>
> Does anybody know why throwing an exception seems to override
> ob_start(), flushing the buffered output?  Is there a workaround?
>
> Thank you,
>
> Leif Wickland 



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux