Question

J'ai eu un gros problème dans un code bibliothèque, que je l'ai épinglé à une seule instruction:

System.out.println((String) null);

Ok, le code ne semble pas vraiment comme ça, mais il appelle certainement println avec un argument null. Faire cela fait tout mon applicaio de jeter un NullPointerException inattendu.

En général, devrait println jeter cette exception dans cette circonstance, ou est-ce comportement non standard en raison d'une mauvaise mise en œuvre de l'instance out?

Était-ce utile?

La solution

La machine virtuelle Java d'impressions de soleil simplement « null ». Ce comportement est spécifié de PrintStream.print(String) quand donné un argument null.

Autres conseils

Ok, a trouvé l'erreur, dans la mise en œuvre de PrintStream.print de ma plate-forme. Je suppose que je vais suivre avec les développeurs.

public void print(String s) {
    // WHERE IS THE NULL CHECK??!
    for(int i=0;i<s.length();i++) {
        write(s.charAt(i));
    }
}

Merci de confirmer que ce comportement est en effet non standard.

Ce ci-dessus ne doit pas jeter une exception. Etes-vous sûr que vous n'avez pas quelque chose comme:

System.out.println(a.b);

a est null?

Sinon, peut-être votre System.out a été mis à zéro (pas beaucoup de gens se rendent compte que vous pouvez définir les flux out / err)?

Lorsque je tente cette ligne sur le bureau Java standard (Java SE 6 update 20 sous Mac OS X), il ne jette pas un NullPointerException, il imprime juste null.

Je pense que jeter un NullPointerException est un bug dans ce cas.

Je viens d'essayer d'exécuter ce sur jdk de soleil 6 et il fonctionnait très bien. Il imprimé null comme prévu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top