2009-11-06 85 views
0

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

回答

1

我不在函数本身中添加try catch,而是在函数被调用的页面中添加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>"; 
} 

,并在我的功能我检查如果查询成功地或者不这样做,如果不是我抛出一个新的异常,将被获取,并存储到$反馈,我回声出的主要容器分区。

这种方式,你可以调用不同的功能withouth的有添加的尝试捕捉每个功能

我希望这可以帮助你

0

注册一个全局异常捕获器。这个函数将捕获任何未捕获的异常。您应该像使用register_session那样做,也就是在每个页面中包含的某个文件中,以便它可以在整个网站上运行。

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

但请注意,你不能从这样的异常中恢复(你不能处理错误并继续)。

-1

基本上这是一个要求,几乎所有的项目,因为他们变得更大。解决方案是创建一个错误处理模块。你可以从头创建一个或使用已有的真棒模块,如ELMAH

+0

ELMAH为ASP.net,我们所谈论的PHP这里 – Palantir 2009-11-06 10:58:17

+0

哎呀,我的坏,只是匆匆的血。 – theraneman 2009-11-20 11:26:17

1

这听起来像你用错误的方式使用异常。一般情况下不应该引发异常,或者至少不应该经常被发现。您可能需要查看其他questions和/或answers,以更详细地解释异常使用情况。