3

这段代码:

print(" - Start");
int[] num = new int[] {1,2,3,4,5,6,7,8,9,10};
for(int i : num)
{
    print("--> "+ i);
    try
    {
        print("    . try");
        if(i == 2)
            break;
    }
    catch (java.lang.Exception e)
    {}
    finally
    {
        print("    . finally");
    }
}
print(" - End");

不能按预期工作。即break似乎不起作用。谁能解释这是为什么?

4

1 回答 1

1

我会说这是一个 BeanShell 错误。不是因为下面列出的原因(这些仅适用于 Mac 上的 Java),而是因为如果您将相同的代码放在“经典”Java 应用程序的 main 方法中,它的行为方式就会不同。也就是说,中断条件起作用。

以下内容仅适用于 Mac 上最新版本的 Java。

我认为这是一个 BeanShell 错误。当我尝试将 if 更改为以下 BeanShell 时挂断:

if(i == 2) {
    print("trying to break");
    break;
}

我强制关闭它并使用命令行重新启动它。我看到以下错误:

$ java -jar bsh-2.0b4.jar 
java[1119] <Error>: CGContextGetCTM: invalid context 0x0
java[1119] <Error>: CGContextSetBaseCTM: invalid context 0x0
java[1119] <Error>: CGContextGetCTM: invalid context 0x0
java[1119] <Error>: CGContextSetBaseCTM: invalid context 0x0
于 2012-08-10T19:49:48.200 回答