Exception inconnue après compilation

Signaler
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
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.

2 réponses

Messages postés
15976
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 août 2020
94
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);
    }
}
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016

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?
Messages postés
15976
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 août 2020
94
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...
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.