Это стандартное поведение для этого кода, чтобы бросить NullPointerException?

StackOverflow https://stackoverflow.com/questions/2887891

Вопрос

У меня была большая проблема в каком-то библиотечном коде, который я приказал в одно утверждение:

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

Хорошо, код на самом деле не похож на это, но это, безусловно, звонит println с нулевым аргументом. Это приводит к тому, что мой приход, чтобы бросить неожиданное NullPointerException.

В общем, следует println брось это исключение в этом обстоятельство или это нестандартное поведение из-за плохой реализации out пример?

Это было полезно?

Решение

JVM от солнца печатает просто «ноль». Это указанное поведение PrintStream.print(String) когда дано А. null аргумент

Другие советы

ОК, нашел ошибку, в реализации моей платформы PrintStream.print. Отказ Я думаю, я буду следить за этим с разработчиками.

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

Спасибо за подтверждение того, что это действительно нестандартное поведение.

Это выше не должно бросать исключение. Вы уверены, что у вас нет чего-то вроде:

System.out.println(a.b);

куда a является null ?

В качестве альтернативы, возможно, ваш System.out был установлен на NULL (не многие люди понимают, что вы можете установить out/err потоки)?

Когда я попробую эту строку на стандартном рабочем столе Java (Java SE 6 обновление 20 на Mac OS X), он не бросает NullPointerException, Он просто печатает null.

Я думаю, что бросает NullPointerException это ошибка в этом случае.

Я только что попытался запустить это на Sun's JDK 6, и он работал просто хорошо. Это напечатало нулевой, как ожидалось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top