Exception inconnue après compilation

stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016 - Modifié par stealone le 4/10/2014 à 23:55
stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016 - 5 oct. 2014 à 00:21
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

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
5 oct. 2014 à 00:00
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);
    }
}
0
stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016
5 oct. 2014 à 00:09
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?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
Modifié par KX le 5/10/2014 à 03:44
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...
0
stealone Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 31 mars 2016
5 oct. 2014 à 00:21
Merci kx c'est grâce à des gens comme toi que les fora ont leur puissance. C'est assez claire tes réponses.
0
Rejoignez-nous