I am not sure I understand this ...
show us with more concrete example with @
Short answer:
mail(arguments);
If I'm not mistaken (don't have my local server up to test this), if the mail server/function was blocked, you'd get an error (see the Free Hosting section for a plethora of similar issues, such as FATAL ERROR: Use of Eval is forbidden).
HOWEVER: The @ sign is used in php to supress/ignore errors.
AS SUCH: If the previous code chunk were to throw an error, then placing an @ sign in front of it would ignore that error: @mail(arguments);.
This is how an error such as "FATAL ERROR: phpinfo() is disabled for security reasons in blahblahblah" can be suppressed without commenting the line out
Simply drop an @ before phpinfo so you have @phpinfo(). Voila; error is suppressed.
The bad news is the error is supressed - you need to do some error checking to verify that an error DIDN'T occur.
Lets say I have a user defined function called ScriptA (I'm not good with fake names obviously). ScriptA contains the use of mail, which can throw an error that will stop the page from loading. To counter this, ScriptA contains the line $mailaccepted=@mail($to,$subject,$message);.
Now, from the php faq:
Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
For arguments sake, assume mail normally stops the scripts from processing if it fails (mail might not in actuality, but others do).
Now, we supressed the error message it kicks back with the @ sign. BUT, we still don't know if it actually worked or not.
Thats why we sent its output to $mailaccepted - mail returns true if it worked, false if something broke.
From there its just a simple if-then-else.
Thats probably more info than required, but it's also good to know
I use the @ sign any time I use a function that may cause an error that'd stop the page from loading. Some sites, like x10, block or restrict some functions, and it would absolutely SUCK if a script that's supposed to be plug-and-play didn't work properly because of it. While the script might not actually _work_ with that line not doing what its supposed to (such as mail not sending mail because its restricted), at least you can have it output a better formatted error than one that stops the rest of the page from loading and essentially goes "I'm broke fix me"