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

avec Java Discussion :

Exception n'héritant pas d'Exception


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut Exception n'héritant pas d'Exception
    Bonjour, j'ai un petit projet où je charge des dll.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try{
    	System.load(path+"libgel.dll");
    } catch (Exception e){
    	System.out.println("error loading "+e.getMessage());
    	e.printStackTrace();
    }
    try{
    	System.load(path+"libelm.dll");
    } catch (UnsatisfiedLinkError e){
    	System.out.println("error loading "+e.getMessage());
    	e.printStackTrace();
    }
    Pour la deuxième, si je met Exception et pas UnsatisfiedLinkError, l'exception n'est pas rattrapée. Pourquoi ? Je croyais que toutes les exceptions en java héritaient de Exception.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Par défaut
    Si je me souviens bien de mes cours de Java, il y a deux classes majeurs héritant de Throwable pouvant être lancée en cas d'erreur dans un programme :
    Exception et Error : à priori, je dirai que tu as affaire à une erreur et non à une exception, par contre je n'ai plus en tête la différence exacte entre les deux.

  3. #3
    Membre éprouvé Avatar de yaraco
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 89
    Par défaut
    Error touche plus à la JVM elle même qu'au programme il me semble.

    Voilà ce que la doc en dit:
    http://download.oracle.com/javase/1....ang/Error.html

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 766
    Par défaut
    Error et Exception on chacune leur raison d'être héritant bien de Throwable les deux.

    Error pour les problèmes ne devant pas être catché à priori et Exception pouvant/devant l'être.
    Error étant défini comme des problèmes anormaux. Alors que Exception des problème normaux. Dans les terme même de la javadoc.

    UnsatisfiedLinkError est une error, donc n'hérite pas de Exception mais de Throwable. Ce qui est normal, car tu essais de charger le code d'une méthode déclarée native. La JVM ne sais vraiment pas quoi en faire.

  5. #5
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Citation Envoyé par Jimmy_ Voir le message
    Ce qui est normal, car tu essais de charger le code d'une méthode déclarée native. La JVM ne sais vraiment pas quoi en faire.
    C'est à dire ?
    J'utilise JNI, mais il faut bien qu'à un moment je charge le code de la dll non ?
    (je comprend pas très bien ta réponse)


    Merci pour les infos et pour le lien.

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    L'API nous dit :

    Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native.
    Donc là, ta JVM ne peut pas accéder à la définiton de ta méthode native. Elle bloque complètement, c'est du même niveau que ne pas trouver une classe (NoClassDefFoundError), il n'y a à priori rien à faire pour proprement gérer le cas (contrairement à une Exception où on peut se dire qu'il y a quelque chose à faire).

Discussions similaires

  1. Exception malformed \ux.. pas de soluce
    Par **jouly** dans le forum Langage
    Réponses: 10
    Dernier message: 02/08/2007, 10h32
  2. Segfault .. pas d'exception ?
    Par Sébastien P dans le forum Dev-C++
    Réponses: 10
    Dernier message: 07/06/2007, 09h41
  3. Mon Exception ne marche pas
    Par Midou dans le forum Accès aux données
    Réponses: 7
    Dernier message: 01/12/2006, 03h46
  4. Réponses: 2
    Dernier message: 19/07/2006, 17h37
  5. Ne comprends pas une exception SQL
    Par n@n¤u dans le forum Outils
    Réponses: 3
    Dernier message: 13/07/2006, 13h04

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