Merci à tous d'avance.Catching errors with mod_cgi & mod_perl
J'ai fait des recherches sur la gestion des erreurs et je n'ai pas l'impression d'avoir une bonne compréhension de ce que je devrais faire. Préambule: Mon code réside dans Apache et est exécuté dans le navigateur. Mes objectifs n'incluent pas l'exécution de la ligne de commande. Je voudrais avoir le comportement de CGI :: Carp (fatalsToBrowser) avec la capacité de capturer la sortie et être capable de le lancer dans ma propre page de modèle, l'envoyer par courriel etc ... J'ai remarqué que fatalsToBrowser ne fonctionne pas avec mod_perl. Quelqu'un sait-il pourquoi? Comment Apache/mod_perl se met-il en travers?
Premier but: Je voudrais mettre quelque chose ensemble qui fonctionne si le code est en cours d'exécution avec mod_perl ou mod_cgi.
Deuxième objectif: J'aimerais disposer d'une ou plusieurs méthodes de haut niveau qui capturent toutes les erreurs similaires à Application_Error de .NET (dans global.asax) et aux méthodes set_exception_handler() et set_error_handler() de PHP. Ceux-ci vous permettent de prendre le contrôle quand une erreur est soulevée, sans encapsuler le code
/gross
instructions try-catch.
choses que j'ai lu/examiné:
1.) OO Exception Handling in Perl, mais n'a pas été ce que je cherchais. La plupart des choses que je veux attraper est die() ing. Le lien suivant dit aussi que cet article est obsolète et obsolète.
2.) Perl: $SIG{__DIE__}, eval { } and stack trace, mais je n'ai pas eu beaucoup de choses liées à mes objectifs.
3.) Mode pratique Perl (O'Reilly), chapitre 21 "Traitement d'erreur et mise au point". Heureusement, tout mon code perl utilise strict et les avertissements sont activés, et les choses les plus importantes mentionnées au chapitre 6 "Coder avec mod_perl in Mind" sont déjà effectuées. 4. J'ai exploré les tables des matières dans "Learning Perl", "Perl Cookbook", "Programming Perl" et "Higher Order Perl" et je n'ai rien vu qui me soit apparu. Si vous pensez que j'ai raté quelque chose s'il vous plaît faites le moi savoir. :)
Je ne me souviens pas où (peut-être dans « mod_perl pratique », mais je l'ai lu que vous ne devriez pas jouer avec $ SIG {__ DIE__}.
Vos scripts sont-ils de véritables scripts 'mod_perl' ou vous exécutez simplement des scripts CGI en tant que scripts' ModPerl :: Registry' pour l'avantage de la performance? –
Mes scripts doivent (devraient) effectuer la même chose dans les deux environnements. – rakhavan
Je pense que vous devriez réévaluer votre opinion sur try/catch blocks. Ils ne sont pas du tout désordonnés ou grossiers s'ils sont utilisés au bon niveau. – innaM