このコードがnullpointerexceptionをスローすることは標準的な動作ですか?
-
04-10-2019 - |
質問
いくつかのライブラリコードで大きな問題がありましたが、それを単一のステートメントに固定しました。
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);
どこ a
は null
?
あるいは、おそらくあなた System.out
nullに設定されています(あなたが設定できることを認識している人は多くありません out
/err
ストリーム)?
標準のデスクトップJava(Mac OS XでJava SE 6アップデート20)でそのラインを試すと、スローしません NullPointerException
, 、印刷するだけです null
.
私はそれを投げると思います NullPointerException
この場合のバグです。
SunのJDK 6でこれを実行しようとしましたが、うまくいきました。予想どおりnullを印刷しました。
所属していません StackOverflow