2011-05-14 83 views
2
try{ 
    $src = imagecreatefromjpeg('https://graph.facebook.com/'.$jsonfriends["data"][$randf]["id"].'/picture'); 
} catch (Exception $z){ 
    $src = imagecreatefromgif('https://graph.facebook.com/'.$jsonfriends["data"][$randf]["id"].'/picture'); 
} 

在上面的代碼中,當'try'塊中的代碼失敗時,控件不會傳遞到'catch'塊。由於https://graph.facebook.com/xxxxxx/picture不是有效的JPEG,因此我得到的輸出爲錯誤。實際上,如果它不是JPEG,在這種情況下它將是GIF。那麼有誰能幫我解決這個問題嗎?如何正確使用Try-Catch異常?

+0

[使用imagecreatefromjpeg和imagejpeg問題]的可能重複(http://stackoverflow.com/questions/1948561/problem-using-imagecreatefromjpeg-and-imagejpeg) – ifaour 2011-05-14 20:11:21

回答

5

imagecreatefromjpeg如果失敗則不會拋出異常。欲瞭解更多信息,請參閱PHP: How to manage errors gracefully?

你會更好使用功能mentioned in the comments of the PHP documentation of the function

function open_image ($file) { 
    $size = getimagesize($file); 
    switch($size["mime"]){ 
     case "image/jpeg": 
      $im = imagecreatefromjpeg($file); //jpeg file 
      break; 
     case "image/gif": 
      $im = imagecreatefromgif($file); //gif file 
      break; 
     case "image/png": 
      $im = imagecreatefrompng($file); //png file 
      break; 
     default: 
      $im=false; 
      break; 
    } 
    return $im; 
} 

這樣,你完全避免這個問題,因爲它根本不會嘗試解析該文件爲JPEG,如果它不是一。

+0

非常感謝!!!!它的工作。 – Mahesh 2011-05-15 06:44:39