【发布时间】:2009-11-06 10:52:45
【问题描述】:
我在课堂上有各种功能。在每个函数中我都使用 try...catch。有没有办法简化这个?我想做一个错误类,它必须可以从我项目中的任何文件中访问。我不想在每个函数中都使用 try..catch,而是应该自动将其定向到 Error 类。
【问题讨论】:
标签: php
我在课堂上有各种功能。在每个函数中我都使用 try...catch。有没有办法简化这个?我想做一个错误类,它必须可以从我项目中的任何文件中访问。我不想在每个函数中都使用 try..catch,而是应该自动将其定向到 Error 类。
【问题讨论】:
标签: php
我没有在函数本身中添加try catch,而是在调用该函数的页面中。
例如:
try
{
$faq_title = mysqli_real_escape_string($link, $_POST['faq_title']);
$faq_subtitle = mysqli_real_escape_string($link, $_POST['faq_subtitle']);
$desc = mysqli_real_escape_string($link, $_POST['desc']);
$faq_e = new Shopadmin();
$faq_e->add_faq($faq_title, $faq_subtitle, $desc);
$feedback = "<div class='succes'>FAQ added succesfully!</div>";
}
catch(Exception $e)
{
$feedback = "<div class='error'>";
$feedback .= $e->getMessage();
$feedback .= "</div>";
}
在我的函数中,我检查查询是否成功完成,如果没有,我会抛出一个新异常,该异常将被捕获并存储到 $feedback 中,我在主容器 div 上回显。
这样你就可以调用不同的函数,而不必在每个函数中添加try catch
希望对你有帮助
【讨论】:
注册一个全局异常捕获器。此函数将捕获任何未捕获的异常。您应该像使用 register_session 一样执行此操作,也就是说,在每个页面中包含的某个文件中执行此操作,以便它在整个站点中运行。
见:http://php.net/manual/en/function.set-exception-handler.php
但请注意,您无法从此类异常中恢复(您无法处理错误并继续)。
【讨论】:
基本上,随着项目的规模越来越大,几乎所有项目都需要这样做。解决方案是创建一个错误处理模块。您可以从头开始创建一个或使用现有的很棒的模块,例如ELMAH。
【讨论】: