如何構成PHP函數失敗的if/else
語句?如果它有效,我希望它以單向方式定義$results
,如果不適用,則需要另一個方向。我不想簡單地顯示錯誤,或者如果錯誤消息失敗,請將它們殺死。如何處理PHP函數錯誤?
目前,我有:
if(file_get_contents("http://www.address.com")){
$results = "it worked";}
else {
$results = "it didnt";}
return $results
如何構成PHP函數失敗的if/else
語句?如果它有效,我希望它以單向方式定義$results
,如果不適用,則需要另一個方向。我不想簡單地顯示錯誤,或者如果錯誤消息失敗,請將它們殺死。如何處理PHP函數錯誤?
目前,我有:
if(file_get_contents("http://www.address.com")){
$results = "it worked";}
else {
$results = "it didnt";}
return $results
if(@file_get_contents("http://www.address.com");){ $results = "it worked";} else { $results = "it didnt";} return $results
前面加一個@的功能,可以surpress它的錯誤消息。
你想PHP的try/catch functions。
它會是這樣的:
try {
// your functions
}
catch (Exception e){
//fail gracefully
}
正如傳染性說的那樣,如果函數拋出一個異常,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
}
我認爲try/catch只能在PHP5中使用,並且拋出拋出異常。不知道雖然... – fresskoma
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