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
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
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).
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.
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.
- 1. Blocs dans des blocs
- 2. Éviter d'essayer/attraper l'enfer dans mes pages Web
- 3. éviter boilerplate lorsqu'ils traitent avec de nombreux types non apparentés
- 4. Événements ne se présentent toujours pas malgré les nombreux essais ... soupir
- 5. Comment puis-je trouver tous les essais vides ... sauf les blocs avec GExperts grep?
- 6. nunit ReSharper prévu des essais d'exception
- 7. Comment charger des données statiques dans Mirth, éviter de nombreux roundtrips à une base de données
- 8. Mise en œuvre des Essais et des Suffixes
- 9. Pourquoi les blocs try.Catch nécessitent-ils des accolades?
- 10. Partage de données avec des blocs
- 11. attraper des exceptions SQLAlchemy
- 12. Essayez Attraper - pas attraper
- 13. Comment puis-je éviter une fuite avec cette séquence d'animation basée sur des blocs?
- 14. variables Les essais effectués par des règles données
- 15. essais en cours pour Ruby on Rails
- 16. Comment attraper des exceptions de gsoap?
- 17. Correspondance des blocs de section INI
- 18. Instructions de retour dans des blocs catch
- 19. Quand utilisez-vous des blocs de code?
- 20. Suppression des « blocs » de texte dans vim
- 21. Comment créer des blocs de commentaire standard?
- 22. Requête MySQL: Affichage des nombres pour de nombreux groupes avec de nombreux enregistrements
- 23. Xslt - Itérer des nœuds dans des blocs
- 24. Ruby - Passer des blocs à des méthodes
- 25. Attraper des erreurs ou des exceptions
- 26. Dans Rails, comment accélérer les essais machinistes?
- 27. Méthode pour les essais à sec?
- 28. WebClient.DownloadFileAsync: Avec de nombreux téléchargements de fichiers
- 29. Recherche de blocs communs
- 30. l'un des nombreux paramètres avec Constructor StructureMap
ELMAH est pour ASP.net, on parle de PHP ici – Palantir
Oops , ma mauvaise, juste un coup de sang. – theraneman