2009-08-06 13 views
0

Wie mache ich eine if/else Anweisung für eine PHP-Funktion fehlgeschlagen? Ich möchte, dass es $results in eine Richtung definiert, wenn es funktioniert und eine andere, wenn es nicht funktioniert. Ich möchte nicht einfach einen Fehler anzeigen oder die Fehlermeldung abbrechen, wenn sie fehlschlägt.Wie behandelt man PHP-Funktionsfehler?

Derzeit habe ich:

if(file_get_contents("http://www.address.com")){ 
    $results = "it worked";} 
else { 
    $results = "it didnt";} 
return $results 

Antwort

1
if(@file_get_contents("http://www.address.com");){ 
    $results = "it worked";} 
else { 
    $results = "it didnt";} 
return $results 

durch ein @ zu einer Funktion voranstellen, können Sie die Fehlermeldung surpress.

2

Sie try/catch functions PHP wollen.

es geht ungefähr so:

try { 
    // your functions 
} 
catch (Exception e){ 
    //fail gracefully 
} 
+1

Ich denke, try/catch funktioniert nur in PHP5 und mit Ausnahmen geworfen mit throw. Nicht sicher, obwohl ... – fresskoma

+0

x3ro ist richtig, ich fürchte, try/catch funktioniert nur mit Ausnahmen, die nur von PHP neue OO-Stil-Funktionalität wie PDO ausgelöst werden. Also nicht eingebaute Funktionen wie file_get_contents(), die einen Warnfehler auslösen, wenn die Datei nicht existiert. Sie können jedoch von überall eine Ausnahme auslösen, und ich denke, dass es möglich ist, normale schwerwiegende Fehler über die ErrorException-Klasse an eine Ausnahme zu senden. Siehe http://www.php.net/manual/en/language.exceptions.php und http://www.php.net/manual/en/class.errorexception.php – simonrjones

0

Wie ansteckend gesagt, funktioniert eine try/catch-Funktion gut, wenn die Funktion eine Ausnahme auslöst. Aber, ich denke, was Sie suchen, ist eine gute Möglichkeit, das Ergebnis einer Funktion zu behandeln gibt das erwartete Ergebnis zurück, und nicht unbedingt, wenn es eine Ausnahme auslöst. Ich glaube nicht, dass file_get_contents eine Ausnahme auslöst, sondern einfach false zurückgibt.

Ihr Code würde gut funktionieren, aber ich bemerkte ein Extra; in der ersten Zeile Ihrer if-Anweisung.

if (file_get_contents("http://www.address.com")) { 
    $results = "it worked"; 
} else { 
    $results = "it didnt"; 
} 
return $results; 

Sie können das Ergebnis eines Funktionsaufrufs auch in einer Variablen speichern, damit Sie sie später verwenden können.

$result = file_get_contents("http://www.address.com"); 
if ($result) { 
    // parse your results using $result 
} else { 
    // the url content could not be fetched, fail gracefully 
} 
Verwandte Themen