2012-06-20 44 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