【发布时间】:2013-03-07 23:35:08
【问题描述】:
所以,我刚刚开始了一些 PHP 开发。我正在尝试使用 HTML DOM 导航/解析库。我选择了 ganon,但并不真正关心我最终使用的是哪一个。
但我马上注意到 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):
“致命错误:超过 30 秒的最大执行时间 C:\xampp\htdocs\hockey\ganon.php 在第 238 行"
或
"警告:file_get_contents():文件名不能为空 C:\xampp\htdocs\hockey\ganon.php 第 19 行"
【问题讨论】:
标签: php error-handling try-catch