IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gestion d'erreurs dans une classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut Gestion d'erreurs dans une classe
    Bonjour, je souhaite ajouter à mes classes persistantes (Mysql)
    une gestion d'erreur un peu construite
    sans la gérer à l'extérieur de ces classes ...
    Apparamment , la déclaration d'un handler hors d'une méthode ne passe pas ... Cela signifie-t-il que je suis condamné à faire cette déclaration à chaque fonction ?
    Merci de votre écoute

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 174
    Par défaut
    Bonjour,

    Oui, à chaque fonction.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $this->result = @mysql_query($query);
    if (!$this->result) {
      $this->show_error(mysql_error(),$query,$display_error);
      @mysql_free_result($this->result);
      return false;			
    } else{
      ... tu envoies ton résultat
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function show_error($error,$query='',$display_error) {
      if($display_error){
        echo "<p><strong>Error:</strong> " . $error . " : -->" . $query . "</p>";
      }
    }
    Ce n'est qu'un exemple, bien sûr !

    Bon courage !

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par lenono Voir le message
    Bonjour,

    Oui, à chaque fonction.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $this->result = @mysql_query($query);
    if (!$this->result) {
      $this->show_error(mysql_error(),$query,$display_error);
      @mysql_free_result($this->result);
      return false;			
    } else{
      ... tu envoies ton résultat
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function show_error($error,$query='',$display_error) {
      if($display_error){
        echo "<p><strong>Error:</strong> " . $error . " : -->" . $query . "</p>";
      }
    }
    Ce n'est qu'un exemple, bien sûr !

    Bon courage !
    beurk c'est quoi c'est @ partout ? ..., de plus ça sert a rien de faire un else après un return, et pourquoi ne pas utilise les exceptions ?

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 174
    Par défaut
    C'est un exemple stealth35 pour bien comprendre.

    Ceci dit ma pédagogie ne reflète en rien ma méthode de travail, ni le "best practice" et me disant que ce forum est lu par des débutants (comme nous l'avons tous été au moins un jour), cela permet une approche progressive de la gestion des erreurs et donc des exceptions.

  5. #5
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut
    Bon, c'est ce que je fais déjà , rarement d'ailleurs avec les @
    L'idée est de construire un handleur d'erreur qui dans certains cas enverrait un mail à l'exploitant du site, ou de stocker ces erreurs (celles qui ne sont pas déjà dans les LOG APache) dans un fichier ...
    Une règle que j'applique est de ne pas masquer des messages d'erreur si on n'a rien à offrir de mieux à l'utilisateur ....
    rien n'est plus troublant de ne rien afficher ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des erreurs dans une requête "IF"
    Par tineighty dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/10/2007, 18h22
  2. Erreur dans une classe !
    Par perdos dans le forum C#
    Réponses: 6
    Dernier message: 16/08/2007, 13h03
  3. Gestion des erreurs dans une classe
    Par gregb34 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 26/07/2007, 09h59
  4. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo