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

Biblioth�ques Discussion :

attraper un crash dans une fonction d'une biblioth�que


Sujet :

Biblioth�ques

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par d�faut attraper un crash dans une fonction d'une biblioth�que
    Bonjour,

    Mon application fait appel a une fonction d'une biblioth�que externe (dont je n'ai que la DLL, pas de sources).
    Malheureusement, l'appel � cette fonction plante selon la valeur que je lui donne (et je n'ai aucun moyen de savoir avant l'appel, si cette valeur va provoquer le crash ou pas).

    J'ai donc essay� de mettre l'appel dans un bloc try-catch (avec les exceptions enclench�es pour mon projet) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    {
       appel_externe(ma_valeur);
    }
    catch
    {
       // erreur
    }
    Le probl�me, c'est que �a crash quand m�me dans le bloc try, ce que je ne m'explique pas : si �a crash dans le try, n'est justement pas le but du catch, d'�viter que l'application plante et me laisser la possibilit� de r�cup�rer l'erreur ?

    Quelqu'un peut-il m'expliquer/m'aider ?
    Merci !
    J�r�me


    [Balises CODE rajout�es par Loulou24, merci d'y penser � l'avenir]

  2. #2
    Membre �m�rite

    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2005
    Messages
    634
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par d�faut
    Non les exceptions ne sont pas des magiennes. Elles servent � trouver o� des exceptions ont �t� lev�es mais pour �a il faut bien que quelqu'un les ait lev�es...

    Voir la � ce propos : http://c.developpez.com/faq/cpp/?page=exceptions

    Donc pour ton probl�me, il faut voir dans la doc de ta biblioth�que. Si elle est en C, tu dois s�rement pouvoir t'en tirer avec des tests de retours de fonction. Et en C++, renseigne-toi sur le type d'exceptions que ta biblioth�que peut lever si elle le fait.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par d�faut
    Merci pour ta r�ponse et le lien sur le FAQ.

    Si je comprend bien, si la biblioth�que que j'utilise (qui est en C++) ne l�ve pas d'exception, je ne peut rien faire pour �viter le crash de mon application...

    Merci !
    J�r�me

  4. #4
    Membre �m�rite

    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2005
    Messages
    634
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par d�faut
    Ben si quand m�me. Tester toi m�me ce que tu y mets, voir si c'est coh�rent, etc. Si �a l'est ton programme ne devrait pas planter, � moins que ta biblioth�que est bugu�e mais la tu ne peux rien faire.

    Mais as-tu consult� la doc ? Il y a peut-�tre quelque-chose pour v�rifier, ou alors une indication sur la plage de valeurs support�es, etc.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par d�faut
    je ne pense pas pouvoir faire quoi que ce soit. Voici plus de d�tails :

    La fonction que j'appelle prend une cha�ne de caract�res en entr�e et �value cette cha�ne comme formule math�matique. La fonction retourne ensuite le r�sultat.

    Par exemple, je lui donne "5*pi/2" et elle me retourne le r�sultat sous forme d'un double.

    Si je lui donne "tan(pi/2)", �a plante, ce qui s'explique, car la tangente de 90�, c'est infini. Mais, si je veux tester la validit� de cette entr�e avant d'appeler la fonction qui plante, tout l'int�r�t de la chose est perdu, car je devrais refaire le travail d'�valuation de la cha�ne.

    Voil� pourquoi j'en conclus que je ne peux rien faire : la fonction plante, ne l�ve apparement pas d'exception et mon application crash.

    J�r�me

  6. #6
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    intercepte les segfault sous VC++. Mais je ne sais pas ce qu'il en est des autres compilos. Et pour les autres OS, je ne sais pas si on peut g�rer �a avec des exceptions (-> signaux).

Discussions similaires

  1. R�ponses: 2
    Dernier message: 29/11/2007, 14h44
  2. R�ponses: 2
    Dernier message: 17/04/2007, 17h14
  3. R�ponses: 3
    Dernier message: 29/04/2006, 13h02
  4. R�ponses: 3
    Dernier message: 16/01/2006, 16h02
  5. R�ponses: 4
    Dernier message: 17/03/2004, 17h24

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