Hoi,

het is misschien een hele stomme vraag, maar ik ben het nu vandaag al vaak tegen gekomen en het is onmogelijk om dit in google op een normale manier op te zoeken, sinds speciale tekens daar worden genegeerd.

<?php
// voorbeeld
$handle = @fopen("/tmp/inputfile.txt", "r");
?>

Dus, ik zie in bepaalde scripts (voornamelijk met filereading) vaak een @ voorkomen. Wat doet deze precies en hoe haal ik hier mijn voordeel uit?

Thnx,
Jan
Dan komt er geen error message ook al issie wel fout
Onderdrukken van foutmelding, alleen gebruiken als je een eigen foutafhandeling gebruikt :-)
Je haalt hier helemaal geen voordeel uit... Hetgeen dat een @ voor een functie doet is de fouten onderdrukken.. (hij toont ze niet)

Door op een goede manier te scripten heb je zo'n @ helemaal niet nodig.
Robert_Deiman schreef op 13.11.2008 09:23
Je haalt hier helemaal geen voordeel uit... Hetgeen dat een @ voor een functie doet is de fouten onderdrukken.. (hij toont ze niet)

Door op een goede manier te scripten heb je zo'n @ helemaal niet nodig.

Leg uit..? Als je maar een goede eigen foutafhandeling hebt, is dit toch helemaal geen probleem?
@saimen,

wat je zegt is leuk,
maar wat is het probleem om het aan te laten staan.

je maakt het voor je zelf alleen maar moeilijker door zown @ er voor te zetten met debuggen.

ik sluit me volledig bij robert aan.
Als jij zelf een goede fout afhandeling hebt, is het helemaal niet zo erg,
Maar je moet al exact weten hoe de functie werkt om alle mogelijke errors af te kunnen vangen.
Je moet dus kijken of de input wel van het juiste type is, of hij niet over een maximum heen gaat, enzovoorts.
Zodra jij echt alle foutmeldingen die een functie kan geven zelf kan afvangen, dan pas heb je een goede eigen fout afhandeling.
ja en wat is het nut dan om er en @ voor te zetten?

de enige die ik ken bedenken is die van ichris.
die doet het ook met als reden om de gebruiker niks te laten weten wat er gebeurt.

voor de rest is het gewoon zinloos als je het mij vraagt
@nico

Je kan met een eigen afhandeling inderdaad best een @ ervoor hebben staan, maar: Bij een goede afhandeling kan je hem net zo goed weghalen.. De meldingen worden bij een goede error_handler die je zelf gebruikt door die error_handler afgehandeld. Het ligt dus meestal aan je eigen error_handling en code als je zonder een @ een foutmelding krijgt.
@ kan wel handig zijn...

zoals reeds gezegd onderdrukt het de fouten en zo kan je een eigen (meer specifieke) afhandeling van fouten maken...

maar of het echt nodig is...ik denk van niet.
ik gebruik dit zo goed als nooit...php heeft zelf een goede foutafhandeling.

Reageren