因此,我第一次开始一些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