Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2011, 16h01   #1
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Par défaut catcher une TypeError

Bonjour,

J'utilise svg-edit (un editeur de svg en javascript).

Mon pb c'est que pour charger un svg, je dois attendre qu'il soit complètement chargé avant de le lui mettre dans le bec.

Pour faire ça, ce que je pense faire, c'est une boucle de try catch jusqu'à ce qu'il soit suffisamment chargé pour faire ce que je lui demande.

Le hic, c'est que ces *$!*µ** ont décidé de lever une f***ing "TypeError" dans leur code, qui n'hérite pas de Error. Résultat, l'execution pass compètement au travers de mon try/catch. D'où ma question : comment catcher un TypeError ? Ou autrement, comment savoir si la fonction s'est exécutée correctement ou si elle a planté?

Merci beaucoup


PS. Pour ceux qui aiment bien voir du code :

Code :
1
2
3
4
5
6
 
    var execute = function() {
        try { maFonctionATester.call();}//rencontre une TypeError non capturée par le catch
        catch(e) {setTimeout(execute,100);}
    }
    execute();
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 17h13   #2
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Bon, ça servira probablement jamais à personne, mais bon, sait-on jamais.

un simple
Code :
if(TypeError) throw "error"
dans le try résout le problème... Ce langage ne cessera jamais de me surprendre...

Bon, après, si quelqu'un veut m'expliquer par quel miracle ça marche, hésitez pas...
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 17h24   #3
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Non, en fait, tout va bien, ça marche pas. C'est juste que ça fait une boucle infinie parce que le throw me fait sortir systématiquement par le catch (TypeError est une fonction non null, donc est tjs évaluée à true). Du coup, forcément, l'éditeur finit par se charger et la fonction par marcher, mais c'était pas vraiment l'objectif initial...
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 19h02   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
Bonjour,
pour tout savoir ou presque sur try...catch

Ce qui parait bizarre c'est l'appel de ta fonction maFonctionATester, à quoi te sert le call sans arguments???
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 21h49   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Mon pb c'est que pour charger un svg, je dois attendre qu'il soit complètement chargé
Euh... c'est moi ou ta phrase se mord la queue ?

Sinon, un SVG si je ne m'abuse, c'est un élément remplacé, il doit donc posséder un événement onload
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/06/2011, 10h04   #6
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Citation:
Euh... c'est moi ou ta phrase se mord la queue ?
Désolé, c'était pas clair :
"Mon pb c'est que pour charger un svg, je dois attendre qu'il [l'éditeur svg-edit] soit complètement chargé"

Citation:
Ce qui parait bizarre c'est l'appel de ta fonction maFonctionATester, à quoi te sert le call sans arguments???
en fait, c'est pas le code original que j'ai copié. Dans le vrai code, je n'ai pas accès directement à maFonctionATester. C'était juste pour montrer l'idée.

J'ai bien regardé le lien, c'est plein de choses intéressantes, mais je n'ai toujours pas réussi à catcher l'exception capturée dans maFonctionATester. Mais je commence à penser que c'est pas possible. Si la fonction considère qu'elle peut s'exécuter correctement lorsqu'elle rencontre cette exception, c'est pas étonnant que le catch puisse rien repérer.

Au final, j'ai réussi à gérer mon problème grâce à une autre fonction de svg-edit qui se comporte de façon plus conciliante : svgEditor.loadFromString() au lieu de svgCanvas.setSvgString

Merci à tous
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h40.


 
 
 
 
Partenaires

Hébergement Web