eclipse jdt 编译的bug

先上代码
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小组提交bug,他们说已经在3.6.1版本中修复了, 我用的是3.6.0

你可能感兴趣的:(eclipse)