> > > standard we are
> > > if (@foo_bar (42, 4711) == ERROR_CODE) {
> > >    PrintXMLErrorMessage ();
> > I do not believe the above will work.  When using the "@" symbol
> > in front of an expression, it makes it so that the error 
> > code that is returned is "0".  While writing my error handler class, 
> > in the
> Wrong. From 
> http://php.net/manual/en/language.operators.errorcontrol.php :
> ------
> PHP supports one error control operator: the at sign (@). When prepended 
> to an expression in PHP, any error messages that might be generated by 
> that expression will be ignored.
> ------
> The @ operator suppresses any error *message*, but leaves the return 
> value intact. Just imagine that with your interpretation in the following 
> snippet
> $conn = @mysql_connect(...)
> $conn would always be set to 0...

Wrong back.  From:
http://php.net/manual/en/function.set-error-handler.php

----
It is important to remember that the standard PHP error handler is 
completely bypassed. error_reporting() settings will have no effect 
and your error handler will be called regardless - however you are 
still able to read the current value of error_reporting() and act
appropriately. Of particular note is that this value will be 0 if the 
statement that caused the error was prepended by the @ error-control
operator. 
----

Using your example, $conn wouldn't be '0' but if any error that is
generated by mysql_connect, that error code/number (what you are
going to be looking for) will be '0'.  So if, in the original function
f00_bar(), it tried to return any error code/number, that code/number
would be '0' (zero) by nature of having the "@" operator prepended
to the function call.
You don't have to believe me.  Set up your own error handler and
see for yourself what error number you get when the "@" symbol
is prepended to an expression.

Chris

Reply via email to