これが私たちの問題を説明するためのいくつかのサンプルコードです:
A a = null;
try {
a = new A();
a = doSomethingThatWillThrowAnException();
} finally {
System.out.println("A = " + a);
}
問題は、finallyブロックに出力される「a」の値は何ですか...
よくわかりませんが、完全には説明されていない可能性のあるものに出くわしたと思います。私のラップトップ(x86ではjdk1.6.0.16)で、「a」がA()に等しいことを確認しました。ただし、Solaris上のJDK 1.4では、値はnullだと思います(例外がスローされても割り当てが実行された場合など)。これは明らかにバグに関連しており、念のために割り当てのないバージョンをデプロイしますが、あなたの1人もこれに気付いたか、提案する何らかの説明があるかどうかを知りたいと思います。
また、問題のあるJDKでこれを実証するためのサンプルプログラムを作成し、結果を投稿します。