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 :

utiliser une erreur php


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut utiliser une erreur php
    Bonjour à tous

    $b et $c proviennent d'un fichier csv. Normalement ils ne peuvent pas être à 0, Sauf si le fichier est corrompu. Si $c = 0 j'ai bien évidemment une erreur "Warning: Division by zero in". Je voudrais pouvoir utiliser cette erreur pour connaitre le fichier défectueux. J'ai bien tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!$a = $b/$c) echo $refDuFichier;
    mais ça ne fonctionne pas vraiment. De cette manière je détecte seulement si $a est égale à 0, quel qu'en soit la raison donc quand l'un des deux terme est égale à 0, que ce soit $b aussi bien que $c. Est il possible de récupérer le code de l'erreur dans une variable? Quelques pistes de recherche seraient bienvenues. Merci à vous.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Et pourquoi tu ne fais pas tout simplement

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( $c === 0 ) {
        echo('Erreur dans le fichier ' . $filename);
        exit;
    }

    ou quelque chose dans le genre.

    Sinon, il que tu redéfinisses ton gestionnaire d'erreur afin qu'il leve des exceptions et que tu récupères tes exceptions dans un bloc try / catch. En gros, je pense que c'est compliqué (surement trop) pour ce que tu cherches à faire.

    PS : echo $refDuFichier; ?? tu veux afficher une resource sur un fichier ?? Si oui, tu risques de ne pas avoir beaucoup d'information à ta disposition.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    parce que j'ai plus de 1000 fichiers d'environ 250 lignes de 18 champs sur lesquels je fais ce genre de calcul. Tu imagine si je devais tester chaque valeur... surtout qu'en principe (quand mon script sera au point) ce genre d'erreur ne devrait plus se produire. D'autre part j'essaye d'apprendre et je profite de toutes les occasions pour mieux connaitre le langage même si parfois la solution peut sembler disproportionnée.
    je boucle sur une liste de fichiers, $refDuFichier est un pointeur sur le fichier en cour de traitement donc si j'ai problème avec ce fichier j'ajoute $refDuFichier[enCours] à un tableau et en sortie j'ai la liste des fichiers corrompus.
    J'ai effectivement pensé aux exceptions mais le souci est le même comment je sait quelle exception a été envoyée?
    En tout cas merci pour ton attention et la rapidité de la réponse

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Bon,

    Si tu veux utiliser un gesitionnaire personnaliser d'erreur, il faut ultiliser la function set_error_handler

    Attention, redéfinir ce gestionnaire ne va pas fonctionner pour certains types d'erreurs. C'est à dire que tu ne vas pas passer par ta fonction de gestion d'erreur. C'est le cas des E_COMPILE_ERROR / E_COMPILE_WARNING (erreur de syntaxe)

    Ensuite tu regardes du côté du gestionnaire d'erreur. Si tu défini un gestionnaire déclenchant une exception, il faudra dans tout les cas que tu la capturer via un bloc try / catch. Et pour déclencher la bonne exception, il te faudra tout de même faire des tests sur l'intégrité de tes données pour voir l'endroit où ça coince.

    En conclusion, j'ai l'impression que tu prend un missile pour écraser une mouche.

    Pour faire simple. Ajoute ton simplement une donner à ton tableaux. Dans les grandes lignes, ça donne : Ton while 1000, tu vérifies l'intégrité de tes données. Si c'est pas bon, tu ajoutes le nom de ton fichier à ton tableau et tu passe au ficher suivant, sinon, tu continues.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    J'ai regardé du coté set_error_handler et c'est effectivement disproportionné. D'autant que la division n'est pas le seul souci dans les données d'entrée. J'en était donc arrivé à la même conclusion que toi : faire un contrôle global sur les fichiers avant traitement.
    Merci de tes conseils

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

Discussions similaires

  1. [XSL] Utiliser une variable PHP dans XSL
    Par mabedan dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 13/08/2007, 16h25
  2. [XSLT] Utiliser une fonction PHP à partir de la feuille de style XSL
    Par sayou84 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 25/04/2007, 14h35
  3. Réponses: 10
    Dernier message: 10/02/2006, 15h23
  4. [PHP-JS] utiliser une variable php dans du javascript
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 12h53

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