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 に答える