2010-12-13 84 views
1

Lors de l'écriture/la maintenance d'une application Web écrite en Perl à l'aide de CGI.pm, comment gérer les erreurs (exceptions)? Webapp en question peut être déployé en tant qu'application CGI simple, en tant qu'application FastCGI (en utilisant CGI :: Fast), et en tant qu'application mod_perl en utilisant le gestionnaire ModPerl :: Registry. Je veux dire ici gérer les erreurs comme la page non trouvée, ou la configuration interdit l'action donnée, ou une commande externe utilisée dans l'application a échoué (comme par exemple ne peut pas se connecter à la base de données).Comment gérer les erreurs dans une application Web écrite en Perl (CGI.pm)?


Edit:ajouté 2010-12-14.

L'exemple flux de code pourrait ressembler à ceci:

sub run { 

    ... 
    run_request(); 
    ... 

} 

sub run_request { 

    ... 
    $actions{$cgi->param('a')}->(); 
    ... 

} 

sub action_foo { 

    foo_body() 

} 

sub foo_body { 

    check_something() 
     or handle_error(some description); 

} 

Je veux dire ici que l'erreur aurait pu être à jeter/traitées dans certains imbriquer, et non seulement dans le gestionnaire d'action/gestionnaire d'itinéraire.

+0

J'ai toujours aimé la façon dont CGI :: Prototype gère ce genre de chose. À tout moment dans le contrôle de flux, vous pouvez effectivement changer de route. C'est une question difficile à répondre en général parce que c'est une question de conception et d'architecture, et différents cadres ont des pensées différentes sur la façon dont les choses devraient se passer. Peut-être que vous pouvez faire une question plus étroite? –

+0

@casperOne - Lorsque vous (en tant que modérateur) supprimez une ou plusieurs réponses, veuillez être gentil et ajouter un commentaire à cette réponse avec une raison EXACTE. En ce moment, on dirait que vous êtes juste un des disciples de # Briandfoy, car il inspecte chaque étape (ce qui ne me dérange pas). –

Répondre

0

passer le code d'état approprié à la méthode d'en-tête selon Creating A Standard HTTP Header

+0

Je sais comment générer correctement la page d'erreur. Ce que je suis sur est ** flux de code **. –