我不完全知道異常是如何工作的。正如我所假設的,他們應該避免php錯誤並顯示「我的錯誤信息」。例如,我想打開文件如何異常(嘗試,趕上)在PHP中工作?
class File{
public $file;
public function __construct($file)
{
try{
$this->file = fopen($file,'r');
}
catch(Exception $e){
echo "some error" . $e->getMessage();
}
}
}
$file = new File('/var/www/html/OOP/texts.txt');
它的工作原理。現在我故意將文件名texts.txt
更改爲tex.txt
,只是爲了查看來自我的catch塊的錯誤消息,但是相反,php提供了一個錯誤Warning: fopen(/var/www/html/OOP/texts.txt): failed to open stream: No such file or directory in /var/www/html/OOP/file.php on line 169
。所以它是PHP錯誤,它不顯示catch塊的錯誤信息。我究竟做錯了什麼? try/catch究竟是如何工作的?
因爲「警告」不是錯誤。你只能捕獲實際拋出的異常。所以對於這個例子,你必須編碼你自己的驗證,你實際上打開了一個文件。 – Jeff
在這裏閱讀如何「捕捉」一個警告:http://stackoverflow.com/questions/1241728/can-i-try-catch-a-warning – Jeff
不是每個PHP語句/函數都會拋出異常。你只能抓到拋出什麼 – RiggsFolly