2012-11-17 24 views

回答

1

它報告錯誤,通知,更正確

<?php 

error_reporting(-1); 

$var = null; 
$var->prop; 

echo 'Hello!'; 

結果:

Notice: Trying to get property of non-object in /..../prog.php on line 6 
Hello! 
+0

那麼腳本的執行不會停止?它只記錄錯誤並繼續。正確? –

+2

不幸的是,由於某些原因,PHP開發人員認爲允許程序員忽略錯誤可能很有用。 – Crozin

1

你應該得到一個PHP通知警告,它會是這個樣子:

PHP Notice: Trying to get property of non-object in [...] 

如果不是,你應該檢查你的錯誤設置。雖然在發展,試圖儘可能地看到所有的PHP錯誤/警告/通知,這樣就可以儘可能地修理你的代碼中設置

error_reporting(-1); 

2

不,只是訪問未定義成員的警告。如果你願意,你可以用__get()神奇的功能手動添加例外到類:

class foo { 

    public function __get($name) 
    { 
     throw new Exception($name . ' does not exist in foo'); 
    }  
} 

現在班會表現你是如何期待。

$bar = new foo(); 
$x = $bar->something; 

回聲出:5及更高版本

Fatal error: Uncaught exception 'Exception' with message 'something does not exist in foo' in C:\web\xampp\htdocs\stupid2.php:7 Stack trace: #0 C:\web\xampp\htdocs\stupid2.php(14): foo->__get('something') #1 {main} thrown in C:\web\xampp\htdocs\test.php on line 7 
0

異常處理的引入,對所有在建功能尚未實現。
如果您想獲取異常,您可以隨時檢查變量是否爲空或不是對象,並拋出可由catch塊處理的自定義異常。

要獲取錯誤,警告和通知,您可以使用PHP.ini文件的開發版本。或者只是搜索php.ini文件,查找Error handling and logging部分,並將error_reporting設置爲E_ALL,查找display_errors並將其設置爲on。然後重新啓動您的Web服務器以使設置生效。

相關問題