設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區
熱門搜尋: 海角七號  籃球火  囧男孩  國境之南  女郎我最兔  林俊傑  柯南  稻香 


休閒聊天
學術文化
感情感性
興趣交流
家庭事務
旅遊交流
飲食交流
家族門派
貼圖分享
動漫交流
音樂世界
美容打扮
潮流資訊
影視娛樂
電玩遊戲
連線遊戲
網絡遊戲
交易廣場
下載分享
BT下載區
CB下載區
電腦資訊
數碼產品
手機交流
網站事務
體育運動
時事新聞
上班一族
博彩娛樂
成人話題


 
標題: [轉載] 如何正確理解PHP的錯誤資訊
qazwsx

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 10229
精華 0
積分 355
帖子 485
潛水 15180 米
閱讀權限 20
註冊 2004-7-10
發表於 2007-3-12 04:26 PM  資料 文集 短消息 
維克斯討論區

如何正確理解PHP的錯誤資訊

[顯示] [隱藏]
我們編寫程式時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑PHP編譯器。如果開發人員無法瞭解編譯器報錯資訊的含義,那麼這些錯誤資訊不僅毫無用處,還會常常讓人感到沮喪。
編譯PHP腳本時,PHP編譯器會盡其所能報告它遇到的第一個問題。這樣就產生一個問題:只有當錯誤出現時,PHP才能將它識別出來(本文後面對此問題進行了詳細描述)。正是由於這個緣故,編譯器指出出錯的那行,從表面上看來可能語法正確無誤,或者可能是根本就不存在的一行!
更好地理解錯誤資訊可以大大節省確定並改正錯誤內容所花費的時間。因此,在本文中,我將努力闡明多種不同類型的PHP報錯資訊,以及在開發過程中如何正確理解各種報錯資訊的含義。
本文中所講述的內容與您所應用的PHP的版本無關,因為本文所描述的各種錯誤並不限定於某一特殊版本的特定錯誤。另外我們假定您是一位初級或者中級程式師,並已經從事編程工作有半年或一年的時間。

編譯器的工作方式

要搞清楚編譯器為什麼會報告某一行上存在錯誤,首先必須明確編譯器解析PHP代碼的機制。我並不打算在本文中對此進行詳細論述,但是,我們將會討論一些更易於引發錯誤的簡單概念。
變數聲明
如果在一條語句中聲明一個變數,具體方式如下所示:
$variable = 'value';


編譯器首先求出語句右半部分的值(即等號右邊的所有內容)。在一些編程書籍中,將此表示為語句的 RHS (右半部分)。恰恰正是語句的這一部分常常會引發錯誤。如果使用的語法不正確,就會出現解析錯誤。
解析錯誤
Parse error:解析錯誤,unexpected T_WHILE in c:\program files\apache group\apache\htdocs\script.php on line 19
每次確定了前一錯誤時,解析錯誤一個接一個地不斷出現。因為PHP在第一個解析錯誤之後就停止執行腳本,調試並糾正這一系列的錯誤往往會讓人覺得特別厭煩。
而且,解析錯誤具有很少的資訊,幾乎不報告錯誤所在的行號。具體原因就是當出現錯誤時,編譯器判定好幾行的語法看起來應該是有效的,直至遇到無效的語法,最可能的情形就是運算式中使用了預定義的字詞,例如;
while = 10; // Bad ? while 就是一個預定義字詞,不能分配給一個值


預定義的字詞包括 while、function等,如果PHP使用 uses to evaluate your code. 您不能使用這些預定義字詞來命名變數,而且如果您非要這樣做的話,PHP就會報出更多的錯誤,這是您無法忍受。
關於這個問題,下面的示例可能會 [ 瀏覽完整內容請先註冊或登入會員。]

頂部
 




當前時區 GMT+8, 現在時間是 2008-10-13 11:05 PM

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.067674 second(s), 6 queries , Gzip enabled

清除 Cookies - 聯繫我們 - 廣告查詢 [威旭代理] - 伊莉討論區 - Archiver
重要聲明:本討論區是以即時上載留言的方式運作,伊莉討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。伊莉討論區有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。