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 :

comprendre l'objet de type Exception [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut comprendre l'objet de type Exception
    Salut !

    J'ai récupéré sur Internet une classe qui permet d'organiser la gestion des objets MySql utilisés dans mon application. Toutefois, j'essaie de comprendre cette classe mais il y a un truc qui bloque :

    voici un bout de la classe qui permet de gérer les exceptions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class MySQLExeption extends Exception {
    	public function __construct($Msg) {
    		parent :: __construct('<pre>'.$Msg.'</pre>');
    	}
    Et voici un bout de la classe qui permet de gérer les exécutions sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class Mysql{
     
    private ... ;
     
    	public function ExecuteSQL($Requete){
     
    		if (!($Ressource = mysql_query($Requete, $this->Lien))) throw new MySQLExeption('1 - Erreur SQL : ');
     
    		if (!$Ressource and $this->Debogue) throw new MySQLExeption('2 - Erreur SQL : ');
     
    		$this->NbRequetes++;
    		$NbAffectee = mysql_affected_rows();
    		return $NbAffectee;      
    	}
    J'ai une requête foireuse (je mets à jour une colonne dont le nom n'existe pas).

    Alors que je tente d'exécuter la requête via la méthode ExecuteSQL, j'obtiens le message suivant :

    Fatal error: Uncaught exception 'MySQLExeption' with message '
    1 - Erreur SQL :
    ' in /var/www/mc/classes/Tools/Mysql.php:122 Stack trace: #0 /var/www/mc/action.php(83): Mysql->ExecuteSQL('???UPDATE ????M...') #1 /var/www/mc/index.php(54): include('/var/www/mc/act...') #2 {main} thrown in /var/www/mc/classes/Tools/Mysql.php on line 122
    Ce que je ne comprends pas est pourquoi le message d'erreur s'affiche-t-il alors que dans la méthode ExecuteSQL si ma requête est foireuse, je lance une exception, mais à aucun moment je ne fais d'affichage ?

    Merci de votre aide !

  2. #2
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi t'utilises pas PDO ?

  3. #3
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    heu, parce que je ne sais pas ce que c'est...

  4. #4
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726

  5. #5
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    ok, je vais aller regarder tout cela... Merci !

    Néanmoins pourrais-tu m'expliquer pourquoi le message d'erreur d'affiche alors qu'à aucun moment je ne fait d'echo ou autre affichage ?

  6. #6
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    parce que quand une exception est lancée, ça fait un Fatal Error, si tu veux contrôler les exceptions il faut faire un try .. catch

    http://php.net/manual/fr/language.exceptions.php

  7. #7
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    en effet, j'ai parallèlement regardé cette page du manuel php et en fait je ne faisais pas le try catch au bon endroit...

    Merci de ton aide et de ton conseil sur PDO...

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

Discussions similaires

  1. [Debutant][Conception] visibilité des objets de type conteneur
    Par thebloodyman dans le forum Général Java
    Réponses: 10
    Dernier message: 04/01/2006, 12h44
  2. Réponses: 3
    Dernier message: 28/10/2005, 01h12
  3. Tableau d'objets de type différents
    Par Hell dans le forum C++
    Réponses: 9
    Dernier message: 11/01/2005, 22h57
  4. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 22h28
  5. DB objet sous types heritage
    Par smex dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2004, 21h58

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