2009-08-06 73 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

它會是這樣的:

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

我認爲try/catch只能在PHP5中使用,並且拋出拋出異常。不知道雖然... – fresskoma

+0

x3ro是正確的,恐怕try/catch只適用於僅由PHP的新的OO風格功能(如PDO)拋出的異常。因此,如果文件不存在,那麼不會像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 
}