所以,我第一次开始了一些PHP开发。我正在尝试使用HTML导航/解析库。我选择了加农,但并不在乎我用的是哪一种。
但我立即注意到,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):
致命错误:在第238行C:\xampp\htdocs\hockey\ganon.php中超过30秒的最大执行时间
或
警告: file_get_contents():文件名不能在第19行的C:\xampp\htdocs\hockey\ganon.php中为空
发布于 2013-03-07 23:42:41
对于第一个问题:在php中有一些致命的错误,比如语法错误(和其他错误),无法捕获。在这种情况下,程序将立即终止。
对于所有其他方面,都有一种使用set_error_handler()的方法。
我已经为您准备了一个自定义错误处理程序函数,它将所有错误或警告转换为异常。注意,函数的输出(我注册它的方式)取决于php.ini设置error_reporting。
首先注册错误处理程序:
set_error_handler('errorHandler', ini_get('error_reporting'));下面是函数本身:
function errorHandler(
$errno,
$errstr,
$errfile = null,
$errline = null,
$errcontext = null
) {
$message = sprintf("%s: %s, file: %s, line: %s",
$errno, $errstr, $errfile, $errline
);
// -->
throw new ErrorException($message, 0, $errno, $errfile, $errline);
}您可以使用以下示例尝试代码:
try {
$a = 1 / 0; // will throw a warning
} catch ( Exception $e) {
echo $e->getMessage();
}发布于 2013-03-07 23:42:27
首先,增加php.ini执行时间,set_time_limit:http://php.net/manual/en/function.set-time-limit.php
其次,所创建的文件名为空,因此需要检查或放置一个新的文件名:
您需要在访问文件名之前创建一个文件名或编写一个新的文件名。例如,创建一个文件:
$ourFileName =“示例”; $ourFileHandle = fopen($ourFileName,'w')或模(“无法打开文件”); fclose($ourFileHandle);
发布于 2013-03-07 23:43:13
set_error_handler()。ob_start() & ob_end_clean(),但更重要的是,试着找出那个编码器住在哪里,并在他的门口拉屎。exit()或die()的人:立即转储库,根本没有理由信任该代码。不幸的是,致命的错误往往是..。致命的。没有例外。但这是我们有error_log ( on ) & display_errors (在生产中关闭,在开发中)指令的地方。
https://stackoverflow.com/questions/15283990
复制相似问题