eclipse jdtコンパイルbug

1289 ワード

先着コード

class MyException extends Exception
{
    private static final long serialVersionUID = 1L;
}

public class UnusedTest
{
    static boolean b = false;

    static void method() throws MyException
    {
        if (b)
        {
            throw new MyException();
        }
    }

    public static void main(String[] args)
    {
        Object o = null;
        try
        {
            while (true)
            {
                method();
                o = new Object();
                b = true;
            }
        }
        catch (MyException e)
        {
        }
        if (o != null)
        {
            System.out.println("After catch!");
        }
    }
}

eclipseは内部のjdtを使ってコンパイルされているようで、コンパイルするとき

 if (o != null)
        {
            System.out.println("After catch!");
        }

deadcodeは無視されていると思われますが、javacは正しくコンパイルできます.eclipseを設定してシステムのjavacを使用してコンパイルできるかどうか分かりません.
後記:
jdtグループにバグを提出したばかりで、3.6.1バージョンで修復されたと言っています.私は3.6.0を使っています.