2009-11-06 5 views
0

J'ai plusieurs fonctions dans une classe. Dans chaque fonction, j'utilise try ... catch. Y a-t-il un moyen de simplifier cela? Je veux faire une classe d'erreur et elle doit être accessible depuis n'importe quel fichier de mon projet. Je ne veux pas utiliser try..catch dans chaque fonction, il devrait plutôt être automatiquement dirigé vers la classe Error.Éviter de nombreux essais ... attraper des blocs

Répondre

1

Je n'ajoute pas le catch try dans la fonction elle-même mais dans la page où la fonction est appelée.

par exemple:

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>"; 
} 

et dans ma fonction je vérifie si la requête a été effectuée avec succès ou non, sinon je jette une nouvelle exception qui sera attrapée et stocké dans la rétroaction de $ que je fais l'écho sur la conteneur principal div.

cette façon, vous pouvez appeler pour différentes fonctions withouth avoir à ajouter la prise d'essai dans chaque fonction

J'espère que cela vous aide

0

Enregistrez un récupérateur d'exceptions global. Cette fonction capture toute exception non verrouillée. Vous devriez le faire comme vous le faites avec register_session, c'est-à-dire, dans un fichier qui est inclus dans chaque page, afin qu'il fonctionne sur le site.

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

Mais notez que vous ne pouvez pas récupérer d'une telle exception (vous ne pouvez pas gérer l'erreur et continuer).

-1

Fondamentalement, c'est une exigence est presque tous les projets comme ils deviennent plus gros. La solution consiste à créer un module de gestion des erreurs. Vous pouvez en créer un à partir de rien ou utiliser des modules géniaux existants comme ELMAH.

+0

ELMAH est pour ASP.net, on parle de PHP ici – Palantir

+0

Oops , ma mauvaise, juste un coup de sang. – theraneman

1

Cela ressemble à une utilisation incorrecte des exceptions. Les exceptions ne devraient généralement pas être jetées ou, du moins, ne devraient pas être interceptées aussi souvent. Vous voudrez peut-être regarder d'autres questions et/ou answers expliquant l'utilisation des exceptions plus en détail.

Questions connexes