2012-06-20 41 views
2

此代码不能工作:在为什么打破循环,当最后参与的BeanShell

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似乎不起作用。 任何人都可以解释为什么这是?

+0

也许我应该改为“是豆壳死了吗?”... – Nils

回答

0

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

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

我认为这是一个BeanShell错误。当我尝试更改如果以下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 
+0

我也想要“bug”。但是,这是什么意思?不要在BeanShell中使用break或不使用BeanShell? – Nils

+0

上面的代码在Beanshell2(http://code.google.com/p/beanshell2/)中运行良好 - 这给我留下了一个结论:不要使用BeanShell(1).... – Nils