2012-01-27 38 views
4

例如,我的用法是:錯誤在PHP處理,模具VS例外

$check = 'no'; 

if($check == 'yes') { 
    //do stuff 
} else { 
     die('Error found'); 
} 

許多開發商是我見過使用:

if($check == 'yes') { 
     //do stuff 
    } else { 
     throw new Exception('Error found.'); 
    } 
  1. 哪一種方法是 '好'?
  2. 任何好處都拋出異常而不是停止執行腳本?
+1

http://stackoverflow.com/questions/7063053/php-error-handling-die-vs-trigger-error-vs-throw-exception – xdazz 2012-01-27 16:41:18

回答

0

哪一種方法更好?

這取決於您的需求。不能說哪一個更好(還有其他的錯誤處理方式,當你真的想討論錯誤處理時,你應該考慮這個錯誤處理,這個網站可能不適合)。

任何好處都拋出異常而不是停止執行腳本?

可以發現異常,die不能被捕獲。例如,如果你想測試你的代碼,die通常是一個表演停止。

除此之外,異常可以攜帶更多信息並更精確地攜帶它。例如,該消息比例爲die更易於使用。一個異常將文件和行保留在拋出的位置。爲了調試有堆棧跟蹤等。

0

異常是更好的(在大型網站的設計),因爲:

  • 他們不立即停止腳本(你有機會在尼斯5XX頁面告知用戶有關內部服務器錯誤)
  • 如果決定在未來不同的方式處理錯誤,你可以這樣做,而不需要修改原來的代碼
  • 異常提供了回溯,緩解了調試
  • 我不知道,但使用過的析構函數時,不應該被稱爲(例外提供執行它們的選項)
  • 您可以創建很多例外類型,分別用於不同類型的錯誤,並很容易地處理他們後來

你應該使用die大概只在較小的腳本和頁面,你不必風格錯誤使用或者在致命錯誤的情況下(不能將主庫包含到索引或類似的東西中)。

0

如果出現一些異常情況(數據庫連接或查詢,頁面或文件未找到...),您可以同時使用throw new Exception,然後在適合您的位置使用catch。然後可能會記錄錯誤到文件,發送郵件給管理員,然後使用die("Some textual message to user.");。如果你不想使用die(),你可以向用戶顯示一些404找不到或500內部錯誤頁面。