Re: [PHP] Exception not being caught

2009-07-16 Thread Weston C
On Thu, Jul 16, 2009 at 7:42 AM, David
Otton wrote:
>> If it's catchable, why isn't it caught in my example?
>
> It's not an exception, it's a "fatal error". Fatal errors are caught
> by error handling functions, not by catch blocks.
>
> Consequence of having (at least) two separate error handling
> mechanisms in the same language.

That's definitely confusing, but more confusing to me is labeling the
fatal error as "catchable", which definitely implies a try / catch
block should handle it.

Maybe they should call it a "handleable" fatal error :) ... implying
it can be managed with set_error_handler().

On Thu, Jul 16, 2009 at 9:38 AM, Martin Scotta wrote:
...
> http://ar.php.net/manual/es/function.set-error-handler.php
...
> You can write a simple handler or a fully featured one, but the essence is
> the same...
>
> function errorHandler(/*args*/)
> {
> $e = new Exception( $message, $code );
> throw $e;
> }

This looks like a great idea -- I was thinking I'd have to give up the
convenient flow control involved in exception handling, but this
should bring it back nicely.

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



Re: [PHP] Exception not being caught

2009-07-16 Thread Martin Scotta
There are many examples of error_handlers at
http://ar.php.net/manual/es/function.set-error-handler.php

The handler only have to cast the error to exception.

YOu can write a simple handler or a fully featured one, but the essence is
the same...

function errorHandler(/*args*/)
{
$e = new Exception( $message, $code );
throw $e;
}

On Thu, Jul 16, 2009 at 8:42 AM, David Otton <
phpm...@jawbone.freeserve.co.uk> wrote:

> 2009/7/15 Weston C :
>
> >  >
> > class A { }
> >
> > $a = new A();   // Ayn would be proud, right?
> >
> > try {
> >echo "a is ",$a,"\n";
> > } catch(Exception $e) {
> >echo "\nException Caught: ";
> >echo $e, $n;
> > }
> >
> > ?>
> >
> > This does not run as expected. I'd think that when the implicit string
> > conversion in the try block hits, the exception would be thrown,
> > caught by the catch block, and relayed.
> >
> > Instead you don't ever see the words "exception caught" and you get
> > "Catchable fatal error: Object of class A could not be converted to
> > string."
> >
> > If it's catchable, why isn't it caught in my example?
>
> It's not an exception, it's a "fatal error". Fatal errors are caught
> by error handling functions, not by catch blocks.
>
> Consequence of having (at least) two separate error handling
> mechanisms in the same language.
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Martin Scotta


Re: [PHP] Exception not being caught

2009-07-16 Thread David Otton
2009/7/15 Weston C :

> 
> class A { }
>
> $a = new A();                           // Ayn would be proud, right?
>
> try {
>    echo "a is ",$a,"\n";
> } catch(Exception $e) {
>    echo "\nException Caught: ";
>    echo $e, $n;
> }
>
> ?>
>
> This does not run as expected. I'd think that when the implicit string
> conversion in the try block hits, the exception would be thrown,
> caught by the catch block, and relayed.
>
> Instead you don't ever see the words "exception caught" and you get
> "Catchable fatal error: Object of class A could not be converted to
> string."
>
> If it's catchable, why isn't it caught in my example?

It's not an exception, it's a "fatal error". Fatal errors are caught
by error handling functions, not by catch blocks.

Consequence of having (at least) two separate error handling
mechanisms in the same language.

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