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 :

Throwable contre Exception


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 33
    Points : 34
    Points
    34
    Par défaut Throwable contre Exception
    Bonjour à tous

    J'ai un bout de code qui lit un fichier et en "catchant" une exception ferme le fichier et le deplace dans le repertoire ERR.( via commande rename)

    catch (Exception $e) le fait sans problème mais quand je fait catch (Throwable $t) ne le fait pas.

    le programme passe bien dans le catch du Throwable et execute les autres commandes mais pas celle-ci.

    Quel qu'un a une explication svp ?

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Effectivement la question semble pertinante

    L'interface Throw n'a pas un fonctionnement tout a fait habituel

    Citation Envoyé par le manuel
    PHP classes cannot implement the Throwable interface directly, and must instead extend Exception.
    et en effet
    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
    16
    17
    18
    19
    20
    21
    22
     
     
    Class toto implements Throwable {
     
    	/* Méthodes */
     public function getMessage(){ return 'message de toto';}
     public function getCode (){ return 0;}
     public function getFile (){return __FILE__;}
     public function getLine (){return __LINE__;}
     public function getTrace (){return array();}
     public function getTraceAsString (){return 'return ' ;}
     public function getPrevious (){return null;}
     public function __toString (){return $this->getMessage();;}
    }
     
     
    try{
    	throw new toto();
    }
    catch( toto $t){
    	echo $t->getMessage();
    }
    ça ne fonctionne pas du tout:

    Fatal error: Class toto cannot implement interface Throwable, extend Exception or Error instead in test.php on line 3
    bon alors il faut se souvenir que Exception et Error implémentent Throwable, apparemment eux ont le droit.
    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
    16
     
    Class toto extends Exception{}
    Class tata extends Error{}
     
    try{
    	throw new toto('message Exception');
    }
    catch( Throwable $t){
    	echo $t->getMessage(),PHP_EOL;
    }
    try{
    	throw new tata('message Erreur');
    }
    catch( Throwable $t){
    	echo $t->getMessage(),PHP_EOL;
    }
    ça marche sur du php 7.1.3 !

    si tu as plusieurs catch, c'est possible que ce soit un autre bloc qui prends la main sur l'exception.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Exception et Throwable
    Par adrian07 dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2012, 00h36
  2. Réponses: 2
    Dernier message: 16/05/2011, 10h33
  3. Réponses: 3
    Dernier message: 22/10/2008, 19h24
  4. [Exception] récupération de la stack trace d'une Throwable
    Par totof2308 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 14/05/2004, 15h49
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 15h11

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