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 des exceptions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut Gestion des exceptions
    Bonjour,

    Je voudrais gérer les exceptions dans mon appli (php/sql). Mais je sais pas comment "bien" faire, je m'explique.
    je sais qu'on peux faire un set_default_handler(), mais je serais obligé de mettre ça dans mon header (session et tout le tralala).
    Mais cela veut dire que le handler (mon gestionnaire d'exception) sera instancié à chaque fois (chaque changement de page). Je voudrais un truc un peu plus 'soft' (afin une instance de gestionnaire d'exception).
    Je me suis dit que je pouvais passer ma classe en singleton, mais voila vu que c'est PHP qu'il s'occupe de l'instancier je me suis dit que ça marcherait pas.
    Est ce qqun aurait une idée d'une solution qui pourrait correspondre à mes besoins ?

    Merci de vos réponses,

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonjour,

    Tu veux sans doute parler de set_exception_handler() ?
    Par définition, une exception est censée être attrapée (catch) non? Si on n'attrape pas l'exception là où elle est levée, quelle est l'intérêt, à part la traiter comme une vulgaire erreur ? Je ne comprends pas bien la nécessité de mettre une exception_handler globale (note que je m'adresse là à php lui-même !).

  3. #3
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Bonjour,

    Tu veux sans doute parler de set_exception_handler() ?
    Par définition, une exception est censée être attrapée (catch) non? Si on n'attrape pas l'exception là où elle est levée, quelle est l'intérêt, à part la traiter comme une vulgaire erreur ? Je ne comprends pas bien la nécessité de mettre une exception_handler globale (note que je m'adresse là à php lui-même !).
    oui dsl, je pensais à autre chose quand je l'ai écris
    enfait oui je vais bien définir un exception handler
    mais en fait chaque page va créer une instance de cet handler (nécessiter de mettre la méthode dans le header)
    et je voudrais savoir s'il y a moyen de définir un handler unique (singleton ou autre) et si comment cela s'implémente t il ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Hum, je comprends ce que tu veux faire : une unique instance de handler pour toute l'application, mais je ne connais malheureusement pas de procédé pour le faire. A moins d'utiliser un modèle MVC (ou au moins VC), avec un contrôleur unique qui affiche toutes les pages et qui gère donc un unique handler.

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par défaut
    Bonjour,
    Personnellement , en utilisant le MVC, je gère les exceptions dans le contrôleur au moment où j'exécute "l'action".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try{
       /* appel de la l'action */
    }
    catch(AccesseniedException $e){//exception spécifique
    /* appel de l'affichage "access denied" */
    }
    catch(Exception $e){
    /* log, affichage, ... */
    }

  6. #6
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Je ne comprend pas trop ton besoin mais tu peux redéfinir tes propres exceptions et voire ton gestionnaire en étendant la classe Exception.

    Puis après, s'amuser avec les bloc try/catch et les throw new MyExceptionRewriten($myError).

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 20h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 16h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 18h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 18h48
  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