2011-10-14 91 views
2

我有一個函數在PHP中啓動一個異常,代碼之後,該異常永遠不會執行,儘管拋出或不拋出的異常。代碼後拋出異常在PHP中沒有執行

if ($a == 1) throw new Exception("Message"); 
echo "Dose not execute for $a == 0"; 

我知道,當後一個異常發生的代碼將無法達成,但在我的例子中,當$a == 0不會拋出異常,但即使不執行echo

非常感謝,我希望有人能夠通過5.3的方式瞭解我的PHP正在發生什麼。

+0

我會建議的第一件事是總是使用大括號。 –

回答

5

按定義拋出異常結束當前運行(函數,方法等)。如果你不想要這種行爲,不要拋出異常。

此外,您不需要在拋出異常後回顯錯誤,只需將錯誤包含在異常中即可。

1

如果你assing「0」到「$」喜歡這一點,當然$a == 0,這是行不通的,因爲你不分配一個值,但檢查平等(不嚴格);

此代碼:

$a = 0; 
if ($a == 1) throw new Exception("Message"); 
echo "Dose not execute for $a == 0"; 

工作。 I.E.,echo工作(「劑量不執行0 == 0」),因爲$a != 1.並沒有引發異常。 你應該使用單引號來產生一條消息(錯誤的,因爲它是),如「劑量不執行$ a == 0」,因爲使用雙引號,該變量在字符串中取代。

驗證碼:

$a = 1; 
if ($a == 1) throw new Exception("Message"); 
echo "Dose not execute for $a == 0"; 

拋出一個異常,它停止腳本的運行和回聲沒有得到執行。所以,它的工作。

像您A碼,

$a == 0; 
if ($a == 1) throw new Exception("Message"); 
echo "Dose not execute for $a == 0"; 

只需返回未定義的變量誤差,由於$一個沒有定義。很可能,您沒有啓用/顯示錯誤,因此無法看到任何內容。

相關問題