避免许多尝试...抓住块

时间:2009-11-06 10:52:45

标签: php

我在课堂上有各种各样的功能。在每个函数中我使用try ... catch。有什么方法可以简化这个吗?我想创建一个错误类,它必须可以从我的项目中的任何文件访问。我不想在每个函数中使用try..catch,而是应该自动定向到Error类。

4 个答案:

答案 0 :(得分:1)

这听起来像是以错误的方式使用异常。通常不应该抛出异常,或者至少不应该经常被抓住。您可能希望更详细地查看解释异常使用情况的其他questions和/或answers

答案 1 :(得分:1)

我不在函数本身中添加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

我希望这可以帮助你

答案 2 :(得分:0)

注册全局异常捕获器。此函数将捕获任何未捕获的异常。您应该像使用register_session一样,即在每个页面中包含的某个文件中执行此操作,以便它可以在整个站点中运行。

请参阅:http://php.net/manual/en/function.set-exception-handler.php

但请注意,您无法从此类异常中恢复(您无法处理错误并继续)。

答案 3 :(得分:-1)

基本上这是一个要求,因为它们变大了几乎所有项目。解决方案是创建错误处理模块。您可以从头开始创建一个或使用已经存在的令人敬畏的模块,如ELMAH