因此,我第一次開始一些PHP開發。我正在嘗試使用HTML DOM導航/解析庫。我選了加農,但並不關心我最終使用哪一個。PHP錯誤處理,當錯誤是文本消息而不是拋出異常
但我已經注意到了,PHP與我所見過的所有其他編碼語言有着根本的不同。當我看錯誤處理時,這是非常明顯的。如果一個包含的類/腳本只是輸出它的錯誤,我不能簡單地用try/catch來捕獲它。我相信這是發生在這裏的事情。我沒有控制權,儘管我是告訴file_get_dom運行的人。它可以做任何想要的事情,並將它想要的任何東西寫入生成的HTML文件。
這是不好的做法,它肯定是讓我困擾。解決辦法是什麼?我可以捕捉它嘗試寫入的文本(用隱藏的div來包圍它)嗎?但是,與此同時,我想阻止這個班寫任何想要的東西,我也要知道是否發生了錯誤,以便我可以採取適當的步驟。
注意:做更多的測試,即使當我拋出我自己的錯誤或使用「或死」時,它並沒有按照我所期望的完成。所以,也許我也不知道如何使用Try/Catch,儘管我已經在幾個教程中看到了它的使用。但我的原始問題仍然存在,即使這是一個語法錯誤,如何控制包含的類,以便他們不污染我的HTML文件。
<?php
try{
include_once('ganon.php');
}catch(Exception $e){ echo "OUT: $e->getMessage()"; }
class GamesSummery{
public function __construct(){
try{
$html = file_get_dom('web site adress');
}catch(Exception $e){ echo "Main: $e->getMessage()"; }
}
} $test = new GamesSummery();
輸出(S):
"Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\hockey\ganon.php on line 238"
OR
"Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\hockey\ganon.php on line 19"
哦,所以PHP中有很多不同類型的錯誤,其中大多數不是Exceptions。 但還有其他人根本無法抓到?這是否算「致命錯誤」?因爲,那很煩人。從我的角度來看,我真的不在乎在某些被稱爲庫的情況下發生了什麼,在這種情況下以及許多其他情況下,即使解析失敗,我也可以繼續正常執行。但是,如果我無法捕捉到錯誤,則不是。 – Jonathon 2013-03-08 00:52:56
我看到他們是另一種類似的方法來捕捉他們。 我不知道我是否可以使用相同的函數來捕獲兩者。 – Jonathon 2013-03-08 00:58:39
我不明白最後的評論。關於致命錯誤,如果第三方庫觸發了致命錯誤,那麼確實存在問題。這就像C中的一個段錯誤。 – hek2mgl 2013-03-08 00:59:16