2009-08-06 12 views
0

PHP関数が失敗したためにif/else文を作成するにはどうすればよいですか?私は$resultsとそれがうまくいくなら片道を定義し、そうでなければ別のものを定義します。私は単純にエラーを表示したり、失敗した場合はエラーメッセージを強制終了したりしたくありません。PHP関数のエラーを処理するには?

現在、私が持っている:

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

答えて

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

を、あなたは、そのエラーメッセージをsurpressすることができます。

2

あなたがPHPのtry/catch functionsをしたいです。

それはのようなものになります。functionの前に@を付けることで

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

私はtry/catchはPHP5でのみ動作し、throwを使用して例外がスローされると思います。確かに確信しています... – fresskoma

+0

x3roが正しいです、私は恐らくtry/catchはPDOのようなPHPの新しいOOスタイルの機能によって投げられる例外を除いてのみ動作します。したがって、ファイルが存在しなければ警告エラーを発生させるfile_get_contents()のような組み込み関数はありません。 どこからでも例外をスローすることができますが、通常の致命的なエラーをErrorExceptionクラスを介して例外に送ることは可能だと思います。 http://www.php.net/manual/en/language.exceptions.phpおよびhttp://www.php.net/manual/en/class.errorexception.phpを参照してください。 – simonrjones

0

伝染病のように、try/catch関数は、関数が例外をスローする場合にうまく機能します。しかし、私はあなたが期待しているのは、関数の結果を処理する良い方法は期待した結果を返し、例外をスローするとは限りません。私はfile_get_contentsが例外をスローするとは思わないが、むしろ単にfalseを返す。

あなたのコードは正常に動作しますが、私は余分に気付きました。 ifステートメントの最初の行に挿入します。

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

また、関数呼び出しの結果を変数に格納して、後で使用できるようにすることができます。

$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 
}