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 :

set_exception_handler non fatal


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut set_exception_handler non fatal
    Bonjour,

    Pour attraper les exceptions non gérées, je fais ceci :

    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
     
    <?php
    function toto()
    {
        throw new Exception('Erreur !!!');
    }
     
    function exception_handler($exception) 
        {
          echo 'Erreur : ' . $exception->getMessage();
        }
    set_exception_handler('exception_handler');
     
    toto(); //Cette fonction lance une exception non gérée
     
    echo "Je veux afficher toto quand même";  
     
    ?>
    Le texte "Je veux afficher toto quand même" n'est pas affichée. Est il possible de faire un handler qui ne génère pas d’arrêt du traitement du script php ?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Par défaut
    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
    <?php 
    function toto()
    {
        throw new Exception('Erreur !!!');
    }
     
    function exception_handler($exception) 
        {
          echo 'Erreur : ' . $exception->getMessage();
        }
     
     
    try {
     	toto(); //Cette fonction lance une exception non gérée
     } catch (Exception $e) {
    	exception_handler($e);
     } 
     
     
    echo "Je veux afficher toto quand même";  
     
    ?>

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut
    Je ne peux pas faire cela.

    set_exception_handler() est justement là pour gérer les exceptions qui ne seraient pas attrapées par un bloc try / catch.

    Merci.

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Lis le manuel, set_exception_handler ne peut pas empêcher l'erreur de se propager et d'arrêter le script. Son rôle est de permettre de déclencher un traitement juste avant que le script crash (par exemple pour fermer correctement une ressource ou pour logger l'erreur).

    L'exécution sera stoppée après l'appel à la fonction exception_handler.
    Si tu veux que toute ton application soit protégée contre la remontée d'exception, il faut wrapper l'intégralité de ton code dans un bloc try/catch.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut
    Dommage, j'avais espéré que set_error_handler() puisse m'aider mais il n'est pas lancé.

    Merci.

Discussions similaires

  1. erreur non fatale
    Par chrisbau dans le forum WinDev
    Réponses: 3
    Dernier message: 18/12/2009, 12h41
  2. Fatal error: Cannot instantiate non-existent class: gladexml
    Par Streetounet dans le forum GTK+ avec PHP
    Réponses: 4
    Dernier message: 07/01/2009, 14h46
  3. [QuickReport 4] Erreur fatale : fichier non trouvé
    Par osma_1978 dans le forum QuickReport
    Réponses: 3
    Dernier message: 05/05/2008, 07h10
  4. fatal error LNK1120: 1 externes non résolus
    Par Elessar01 dans le forum MFC
    Réponses: 10
    Dernier message: 30/04/2008, 16h25
  5. Fatal error: Call to a member function on a non-object
    Par alemat13 dans le forum Langage
    Réponses: 6
    Dernier message: 31/12/2007, 17h22

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