Exception inconnue après compilation

Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
Bonjour, après modification de quelques lignes de code et compilation, je reçois une erreur que je ne comprend pas. Le output de Netbeans m'affiche: ExceptionInInitializerError. Je suis tout confus. Aidez moi, je ne sais pas à quoi renvoie cette erreur.

Tout ce qui brille n'est pas or.
Afficher la suite 

2 réponses

Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
88
0
Merci
Bonjour,

Cela arrive lorsqu'une exception se produit sur un code d'initialisation d'une variable static. Exemple :

public class Test
{
    public static final int N = init();
    
    private static int init()
    {
        int n = 0;
        if (n == 0)
            throw new RuntimeException();
        return n;
    }
    
    public static void main(String[] args)
    {
        System.out.println(N);
    }
}
Commenter la réponse de KX
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
0
Merci
Merci pour la prompte réponse. En d'autres termes tu veux dire que les variables statiques doivent s'initialise dans un block statique ou alors elle s'initialise une fois pour toutes?
KX
Messages postés
16075
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 novembre 2019
88 -
Les variables statiques sont initialisées au chargement de la classe, cela ne se fait pas au démarrage, mais à la première utilisation. C'est pour cela qu'en JDBC on fait un Class.forName("driver"), ça permet d'initialiser le driver (généralement au démarrage de l'application) dont la classe ne serait jamais chargée sinon.

Sinon, peu importe que la variable statique soit initialisée directement ou par un appel à une méthode statique. Mais dans le cas d'une ExceptionInInitializerError cela vient forcément d'une exception dans la méthode statique (comme dans mon exemple) ce qui a empêché l'initialisation de la variable statique et donc de la classe. Dans ce cas le programme ne peut pas continuer...
stealone
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
Merci kx c'est grâce à des gens comme toi que les fora ont leur puissance. C'est assez claire tes réponses.
Commenter la réponse de stealone