Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1146 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Gestion d'erreurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion d'erreurs

n°1530769
did-54
Posté le 19-03-2007 à 20:26:08  profilanswer
 

Bonjour,
 
Une petite question aux spécialistes : Je développe un site sans aucune prétention en php/MySQL.  
Je voudrais faire une gestion des erreurs assez efficace, c'est-à-dire éviter de voir apparaitre des erreurs PHP dans ma page quand tout va mal, ou du moins gérer les cas où ca plante.
 
En particulier, si ma requête mysql se vautre, j'ai essayé de gérer ca via un try/catch, mais ca ne fonctionne pas... (je suis sous php 5).
 
J'aimerais savoir comment les pros s'y prennent, si vous avez des conseils :)
 
Merci d'avance  :hello:

mood
Publicité
Posté le 19-03-2007 à 20:26:08  profilanswer
 

n°1530806
nORKy
Grmmph...
Posté le 19-03-2007 à 21:55:15  profilanswer
 

did-54 a écrit :

Bonjour,
 
Une petite question aux spécialistes : Je développe un site sans aucune prétention en php/MySQL.  
Je voudrais faire une gestion des erreurs assez efficace, c'est-à-dire éviter de voir apparaitre des erreurs PHP dans ma page quand tout va mal, ou du moins gérer les cas où ca plante.
 
En particulier, si ma requête mysql se vautre, j'ai essayé de gérer ca via un try/catch, mais ca ne fonctionne pas... (je suis sous php 5).
 
J'aimerais savoir comment les pros s'y prennent, si vous avez des conseils :)
 
Merci d'avance  :hello:


 
Car les fonction mysql_* ne génère pas d'exception. Il faut tester leur code de routeur et lancer l'exception en concéquence
Sinon, utilise PDO

n°1530861
PIGs_DarkS​ith
Force Orange
Posté le 20-03-2007 à 02:39:36  profilanswer
 

Pour cacher les erreurs tu met "@" devant ta variable ;)
Bien sûr ça ne résoud pas le bug, ça le cache juste ^^.

n°1530891
did-54
Posté le 20-03-2007 à 09:07:27  profilanswer
 

et y'a aucun autre moyen ? (je parle du test de valeur de retour évidemment :) ) Je veux dire c'est LA best-practice ?


Message édité par did-54 le 20-03-2007 à 09:07:51
n°1530900
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-03-2007 à 09:16:02  profilanswer
 

tu peux te servir de mysql_error et mysql_errno  pour récupérer les codes d'erreur renvoyés par mysql

n°1530930
sielfried
Posté le 20-03-2007 à 10:45:31  profilanswer
 

Ben si tu veux pas que les warnings incongrus se voient, error_reporting(0) sur ton site publié/en prod. Tu peux te démerder pour faire un système qui loggue les éventuelles erreurs MySQL (mysql_error) dans un fichier par exemple, sans que ça les affiche au client. Tu peux aussi au passage te faire ton propre handler d'erreurs qui va logger de la même façon toute error/warning/notice (set_error_handler).
 
Par contre en dév, tu laisses error_reporting(E_ALL | E_STRICT) qui t'avertit directement de tout (et le faire plutôt dans php.ini directement, tant qu'à faire).
 
Le mieux reste de se faire sa propre classe (ou son propre jeu de fonctions au moins) qui gère tout ça, avec un flag booléen quelque part genre DEBUG qui permet de savoir si t'es en mode dév ou en mode prod.


Message édité par sielfried le 20-03-2007 à 10:45:56

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1530942
chani_t
From Dune
Posté le 20-03-2007 à 10:54:32  profilanswer
 

Pour moi ce qu'il faut faire :
 
utiliser des trigger_error, afin de pouvoir générer des erreurs à partir de défauts habituels exemple :  

Code :
  1. $this->db = mysql_select_db($config->database1, $this->connect)
  2.   or trigger_error ('Sélection de la base de données impossible '.mysql_error(), E_USER_WARNING);


 
Ensuite gérer les erreurs en direct quand le site est en phase de test, sinon gérer les erreurs via un log et/ou via l'envois d'email à l'admin en phase de production.
 

Code :
  1. /*
  2.  * Fonction de configuration de la gestion des erreurs
  3.  */
  4. function gestion_erreur($type_gestion) {
  5.  if ($type_gestion=1) {    //phase de test
  6.   error_reporting (E_ALL | E_STRICT);      //filtrage des erreurs reportées
  7.   ini_set('display_errors', true);      //affichage des erreurs
  8.   ini_set('html_errors', false);       //désactivation des liens html dans les erreurs
  9.   ini_set('display_startup_errors',true);     //affichage des erreurs de démarrage
  10.   ini_set('log_errors', true);       //création d'un fichier de log
  11.   ini_set('error_log', 'journal/error.log');    //localisation du fichier de log
  12.   ini_set('error_prepend_string','<font color="red">'); //début mise en forme erreur
  13.   ini_set('error_append_string','</font>');    //fin mise en forme erreur
  14.   ini_set('ignore_repeated_errors', true);     //ignorer les erreurs répétées
  15.  }
  16.  elseif ($type_gestion=2) {   //phase de production avec fichier log externe
  17.   error_reporting (E_ALL);        //filtrage des erreurs reportées
  18.   ini_set('display_errors', false);      //affichage des erreurs
  19.   ini_set('html_errors', false);       //désactivation des liens html dans les erreurs
  20.   ini_set('display_startup_errors',false);    //affichage des erreurs de démarrage
  21.   ini_set('log_errors', true);       //création d'un fichier de log
  22.   ini_set('error_log', 'journal/error.log');    //localisation du fichier de log
  23.   ini_set('error_prepend_string','<font color="red">'); //début mise en forme erreur
  24.   ini_set('error_append_string','</font>');    //fin mise en forme erreur
  25.   ini_set('ignore_repeated_errors', true);    //ignorer les erreurs répétées
  26.  }
  27.  else {        //phase de production avec journal système
  28.   error_reporting (E_ALL);        //filtrage des erreurs reportées
  29.   ini_set('display_errors', false);      //affichage des erreurs
  30.   ini_set('html_errors', false);       //désactivation des liens html dans les erreurs
  31.   ini_set('display_startup_errors',false);    //affichage des erreurs de démarrage
  32.   ini_set('log_errors', false);
  33.  }
  34. }


 
vla une fonction qu eje me suis fait, et que j'utilise pour configurer la gestion des erreurs.
 
Note : J'utilise aussi les PDO donc je récupére les exceptions via try / catch, et je les renvois vers l'utilisateur avec un trigger_error.  
Je ne sais pas si c'est l'idéal, mais c'est comme ça que je fait :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Gestion d'erreurs

 

Sujets relatifs
Probleme avec gestion des erreurs en vbscriptComment faire une gestion avancée d'erreurs de saisies
Gestion d'erreurs en VBSCRIPTTerminer l'exécution d'une page au milieu / gestion d'erreurs
[RESOLU]Gestion des erreurs dans VBGestion des erreurs - petite question
Gestion des erreurs[vbs]Gestion des erreurs et fichier log...
Gestion des erreurs[C/C++] lecture de fichiers dans un format perso - gestion des erreurs
Plus de sujets relatifs à : Gestion d'erreurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR