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 Perl Discussion :

Syntaxe d'appel de fonction


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Par défaut Syntaxe d'appel de fonction
    Bonjour,

    J'espere que le titre est suffisament explicite. Mon probleme est le suivant. Je me suis mis en tete d'ecrire un petit gestionnaire d'exception etant donne que ce n'est pas encore integre dans perl.

    Apres plusieurs essais je suis tombe sur le module Error.pm qui offre une syntaxe sympathique. Le probleme est que je n'arrive pas a reproduire la meme syntaxe.

    Dans la doc les appels sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try
    { ... }
    catch Exception with
    {...}
    avec try, catch et with des fonctions du module

    Bien sur j'ai essaye de reprendre le code du module mais pas moyen rien ne passe et le compilateur me dit a chaque coup:
    Bareword found where operator expected at test.pl line 10, near "KillException with"
    (Do you need to predeclare KillException?)
    syntax error at test.pl line 11, near "KillException with
    "
    Execution of test.pl aborted due to compilation errors.
    Si quelqu'un a une solution je suis plus qu'impatient de la connaitre ^^

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Qui a dit que perl ne gérait pas les exception ? Pas moi en tout cas !

    Hop, tu as le bloc eval qui te permet d'évaluer une expression et avec un opérateur or à court circuit tu devrais arriver à quelque chose de satisfaisant, style.
    Par exemple, tu veux gérer une division par 0, il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval { $i/$j } or die ("Division par 0");
    En fait, eval renvoie la valeur de la dernière expression analysée, et accepte les return : tu peux évaluer ce que tu veix, retourner une valeur fausse en cas d'exceptio et la traiter avec un warn par exemple

    Plus d'infos sur eval sur le site des mongeurs, fais un rechercher eval dans la page et tu trouveras

    €dit : mais peut être que ce sustème de gestion des exceptions ne te plais pas. C'est la méthode classique en Perl en tout cas...

  3. #3
    Membre confirmé Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Par défaut
    Oui je connais ca. Ensuite en lisant $@ je peux traiter l'erreur. Eh bien j'essaye d'encapsuler ca dans une syntaxe try...catch pour faire plus claire. Et je throw des objets a la place d'afficher des messages d'erreur.

    Bref quand je dis "pas de mecanisme d'exception" je parle bien sur le la syntaxe try catch, pas de eval.

    Donc ma question reste ouverte ^^

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Peux tu nous montrer un exemple complet de code ? On a pas assez de code pour t'aider là...

  5. #5
    Jeh
    Jeh est déconnecté
    Membre expérimenté Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Par défaut
    un exemple avec TRY-CATCH qui fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     try {}
    catch Error::Simple with {
    	my $exception = shift;
    	print $exception->{'-text'};
    }
    otherwise {
    	my $exception = shift;
    	print $exception->{'-text'};
    };
    Bon courage.

  6. #6
    Membre confirmé Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Par défaut
    @Woufeil: Desole si j'ai pas repondu hier soir, je crois aue je me suis endormi direct en rentrant du boulot ^^

    @Jeh: oui c'est exactement ce type de syntaxe. Mais je ne veux pas utiliser les packages Error ou Exception::Class::TryCatch. Je voudrai reussir a reproduire la syntax du bloc try...catch...with qui par defaut est visiblement jetee par Perl avec l'erreur citee plus haut. Doit y avoir un truc a faire avec les protoypes ou je ne sais quoi d'autre pour y arriver mais ca fait des jours que je cherche sans resultats.

Discussions similaires

  1. [XL-2003] Problème syntaxe appel de fonction
    Par HankMoody dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/08/2012, 19h56
  2. [Débutant] la syntaxe de declaration d'une fonction,et comment faire l'appel de fonction.
    Par jeune informatique dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/06/2010, 16h53
  3. Réponses: 10
    Dernier message: 20/10/2008, 23h08
  4. appel de fonction qui ne marche pas : syntaxe?
    Par adoptioninternationa dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2008, 12h07
  5. Réponses: 1
    Dernier message: 08/05/2008, 09h51

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