このコードがnullpointerexceptionをスローすることは標準的な動作ですか?

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

質問

いくつかのライブラリコードで大きな問題がありましたが、それを単一のステートメントに固定しました。

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

OK、コードは実際にはそのように見えませんが、確かに呼び出します 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);

どこ anull ?

あるいは、おそらくあなた System.out nullに設定されています(あなたが設定できることを認識している人は多くありません out/err ストリーム)?

標準のデスクトップJava(Mac OS XでJava SE 6アップデート20)でそのラインを試すと、スローしません NullPointerException, 、印刷するだけです null.

私はそれを投げると思います NullPointerException この場合のバグです。

SunのJDK 6でこれを実行しようとしましたが、うまくいきました。予想どおりnullを印刷しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top