JeuWeb - Crée ton jeu par navigateur
Comment gérez-vous les erreurs fatales? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Comment gérez-vous les erreurs fatales? (/showthread.php?tid=5344)

Pages : 1 2


Comment gérez-vous les erreurs fatales? - Myrina - 31-03-2011

Les erreurs du type :
Citation :<br />
<b>Fatal error</b>: Call to undefined method ...
ne sont pas interceptées par set_error_handler('...',E_ALL);

D'après les recherches faites, la seule solution serait de vérifier comment le script s'arrête grâce à la fonction register_shutdown_function() afin que ce message soit géré et non renvoyé à l'utilisateur.

Mais je ne trouve pas d'implémentations satisfaisantes à mes yeux donc je voulais savoir comment vous le traitiez?


RE: Comment gérez-vous les erreurs fatales? - Argorate - 31-03-2011

Je ne comprends pas très bien ta demande, si tu as une erreur de ce genre c'est que c'est toi qui a fait une erreur de prog, il ne te reste plus qu'a la chercher et la régler non? Confused


RE: Comment gérez-vous les erreurs fatales? - niahoo - 31-03-2011

Tu ne peux pas récupérer ces erreurs là. C'est foutu.

Mais tu peux mettre en cache:

ini_set('html_errors', 0);
ob_start('ma_fonction_de_callback');
declencher_mon_erreur();


RE: Comment gérez-vous les erreurs fatales? - Myrina - 31-03-2011

Je suis d'accord avec ta remarque Argorate, mais ceci n'empêche pas que des erreurs fatales puissent se produire en production.

Sinon, la piste ob_start() est à creuser...


RE: Comment gérez-vous les erreurs fatales? - php_addict - 31-03-2011

n'y a t il pas moyen de faire une redirection avec set_error_handler en cas d'erreur?


RE: Comment gérez-vous les erreurs fatales? - Myrina - 31-03-2011

(31-03-2011, 02:34 PM)php_addict a écrit : n'y a t il pas moyen de faire une redirection avec set_error_handler en cas d'erreur?
Justement, cela ne fonctionne pas pour ces types d'erreurs!



RE: Comment gérez-vous les erreurs fatales? - djidi - 31-03-2011

Le seul moyen semble être celui que tu as indiqué : register_shutdown_function().
http://www.developpez.net/forums/d823257/php/langage/syntaxe/intercepter-erreurs-fatales/#11

@Argorate : Il est quand même plus agréable pour les utilisateurs de voir une page indiquer qu'une erreur a eu lieu plutôt que d'afficher un gros "Fatal Error..." sur une page blanche.


RE: Comment gérez-vous les erreurs fatales? - Argorate - 31-03-2011

Oui bien sur, m'enfin ça se voit et se corrige avant la prod en théorie se genre d'erreurs non?


RE: Comment gérez-vous les erreurs fatales? - Sephi-Chan - 31-03-2011

Mais aucun développeur n'est infaillible et un bug peut passer, notamment quand le bug est farfelu (des conditions très spécifiques) et que le développeur n'utilise pas de tests automatisés (tels que les test unitaires, les tests d'intégration ou les tests fonctionnels).

Pour régler ce problème, j'utilise un langage objet (Ruby) qui gère les exceptions (PHP les gère aussi, mais erreurs (Parse error, Fatal error, ne sont pas des exceptions, donc l'intérêt est limité) et un framework (Ruby on Rails) capable de récupérer ces exceptions à n'importe quel niveau du cycle de vie d'une requête HTTP. Cela me permet de les traiter (ou pas) selon leur type, proprement.

Vive les bons langages et les bons outils ! Smile


Sephi-Chan


RE: Comment gérez-vous les erreurs fatales? - Myrina - 31-03-2011

Je te rejoins dans tes propos sauf que personnellement, et professionnellement, je citerai aussi le Java qui dispose d'un nombre plus que conséquents d'outils. (Tiens, ca me fait penser en Hors-Sujet que je n'ai pas encore essayé de voir ce que donnait Sonar sur du PhP).