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

Java Discussion :

Qu'est ce qui fait planter à l'appel d'une méthode


Sujet :

Java

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Qu'est ce qui fait planter à l'appel d'une méthode
    Bonjour

    Toujours dans mes questions de débutant Java, j'observe des départs en exception dans l'appel de méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static Object parseDpbString(String name, Object value) {
     
            // for the sake of unification we allow passing boolean, byte and integer
            // types too, we loose some cycles here, but that is called relatively
            // rarely, a tradeoff between code maintainability and CPU cycles.
            if (value instanceof Boolean)
                return value;
            else
            if (value instanceof Byte)
                return value;
            else
            if (value instanceof Integer)
                return value;
    Pour appeler la fonction ci dessus j'ai fait des appel respectivement à 2 String puis à une String et un objet
    Dans les deux cas je pars en exception avant d'arriver dans la méthode.
    Je me suis dit que la String était un sous cas de l'Object.
    L'explication sera bienvenue.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    1) donne l'exception avec son stacktrace, on est à court de boule de crystal
    2) donner le code COMPLET de la méthode, là elle est pas finie
    3) c'est quoi ces tests en début de méthode. Si c'est pour toujours retourner "value" le test sert à rien!

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut J'ai tourné le problème
    bonjour,

    Pour l'instant j'ai tourné le problème en recopiant la méthode dans la classe appelante et en la passant en private.
    J'ai remarqué que ca règlait la plupart des problèmes d'appel. je ne sais pas pourquoi, mais j'ai d'autres problèmes à résoudre....
    Dans l'attente je donne le code de la méthode entière... qui n'est pas de moi ( c'est du code de Jaibird).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
        private static Object parseDpbString(String name, Object value) {
     
            // for the sake of unification we allow passing boolean, byte and integer
            // types too, we loose some cycles here, but that is called relatively
            // rarely, a tradeoff between code maintainability and CPU cycles.
            if (value instanceof Boolean)
                return value;
            else
            if (value instanceof Byte)
                return value;
            else
            if (value instanceof Integer)
                return value;
            Integer type;
            // if passed value is not string, throw an exception
            if (value != null && !(value instanceof String))
                throw new ClassCastException(value.getClass().getName());
            else
                if( value != null)
                   type = TYPE_STRING;
                else
                   type = (Integer)dpbParameterTypes.get(name);
     
            if( type == null)
                type = new Integer(TYPE_UNKNOWN);
     
            switch(type.intValue()) {
                case TYPE_BOOLEAN :
                    return "".equals(value) ? Boolean.TRUE : new Boolean((String)value);
     
                case TYPE_BYTE :
                    return new Byte((String)value);
     
                case TYPE_INT :
                    return new Integer((String)value);
     
                case TYPE_STRING :
                    return value;
     
                case TYPE_UNKNOWN :
                default :
     
                    // set the value of the DPB by probing to convert string
                    // into int or byte value, this method gives very good result
                    // for guessing the method to call from the actual value;
                    // null values are assumed to be booleans.
     
                    if (value == null)
                        return Boolean.TRUE;
     
                    try {
     
                        // try to deal with a value as a byte
                        int intValue = Integer.parseInt((String)value);
     
                        if (intValue < 256)
                            return new Byte((byte) intValue);
                        else
                            return new Integer(intValue);
     
                    } catch (NumberFormatException nfex) {
     
                        // ok, that's not a byte, then set it as string
                        if ("".equals(value))
                            return Boolean.TRUE;
                        else
                            return value;
                    }
            }
        }
    Pour la stack et le reste il faudrait que je revienne en arrière....

Discussions similaires

  1. Macro qui fait planter Excel systématiquement lorsqu'un bouton lui est affecté
    Par SimonDelmarre dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/09/2014, 15h58
  2. 56k qui fait planter le PC
    Par Spack dans le forum Périphériques
    Réponses: 4
    Dernier message: 03/10/2005, 19h35
  3. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 18h48
  4. Réponses: 12
    Dernier message: 16/03/2004, 14h21

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