Frage

Ich habe ein großes Problem in einigen Bibliothek Code hatte, die ich auf eine einzige Aussage gemerkt haben:

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

Ok, wird der Code nicht tatsächlich so aussehen, aber es ruft sicherlich println mit einem Null-Argumente. Dadurch meine ganze applicaio verursacht einen unerwarteten NullPointerException zu werfen.

Generell sollte diese Ausnahme unter diesen Umständen println werfen, oder ist das Nicht-Standard-Verhalten aufgrund einer schlechten Umsetzung der out Instanz?

War es hilfreich?

Lösung

Die JVM von Sonne druckt einfach "null". Dies ist das angegebene Verhalten von PrintStream.print(String) wenn ein null Argument angegeben.

Andere Tipps

Ok, den Fehler gefunden, in meinem Plattform-Implementierung von PrintStream.print. Ich denke, ich werde es mit den Entwicklern folgen zu lassen.

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

Danke für die Bestätigung, dass dies tatsächlich nicht-Standardverhalten.

Das oben sollte nicht eine Ausnahme werfen. Sind Sie sicher, dass Sie nicht so etwas wie:

System.out.println(a.b);

wo a ist null?

Alternativ vielleicht Ihr System.out wurde auf null gesetzt (nicht viele Leute wissen, dass Sie die out / err Ströme einstellen können)?

Wenn ich versuche, diese Zeile auf Standard-Desktop-Java (Java SE 6 Update 20 auf Mac OS X), ist es nicht ein NullPointerException wirft, ist es nur druckt null.

Ich denke, dass ein NullPointerException werfen ist ein Fehler in diesem Fall.

Ich habe gerade versucht, diese JDK auf Sonne läuft 6 und es funktionierte gut. Es gedruckt null, wie erwartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top