自 2000 年以来我一直在处理 PHP,但不是很活跃,而且我对 PHP5 的了解非常糟糕。最近,我在休息了 5 年之后重新对 Web 开发产生了兴趣,并开始着手一个项目。我为那个变得相当大的项目编写了一个类,但到目前为止还没有任何特定的错误处理。
该课程的目的是解析具有特定布局的 HTML 文件并处理其数据,这或多或少是我重新投入游戏的训练练习。我现在开始重写这个类,我决定是时候对错误处理更专业一点,而不是简单地使用 die(),到目前为止我一直在使用它。我想我们都同意这是一个可怕的方向。我希望该课程完全独立于项目,以便我可以将其分发给任何想要使用它的人。
我要解析的 HTML 文件包含具有特定边框颜色的表格、具有特定 bgcolors 的 trs,但元素的数量是动态的。为了验证 HTML 文件是否确实具有这种特定模式,我有以下示例(伪)代码
public function Validate() {
$tables = getall('table', $this->data);
foreach ($tables as $table) {
if ($table->bordercolor != 'navy' && $table->cellspacing != 0) {
// Error
}
foreach ($tables->tr as $tr) {
if ($tr->bgcolor != '#fff') {
// Error
}
}
}
return true;
}
它说 // 错误的地方,HTML 布局没有检出,我的班级不应该尝试解析它。传统上我会这样做:
if ($table->bgcolor != '#fff') {
$this->error = 'Invalid HTML layout';
return false;
}
从我调用我将使用的方法的地方
if ($class->Validate() === false) {
exit_with_error($class->GetError()); // Simple return of $this->error
}
我一直认为这是一种不错的方法,因为它很简单。然而,这也是一个缺点,因为除了文本本身之外,它并没有真正提供任何关于错误的深入信息。我看不到错误是在哪里触发的,调用了哪些方法等。
自从我恢复我的 PHP 爱好以来,我发现了异常。我对它们的问题只是我不明白如何正确使用它们。如果我应该使用它们。我希望我的课程是可移植的;我可以使用异常来处理错误吗?如果是,我如何传达错误(即翻译我的传统错误处理)?或者也许有更好的方法可以采取,我不知道。
任何帮助表示赞赏:)