我不完全知道异常是如何工作的。正如我所假设的,他们应该避免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