4

私はクレイジーな文字列操作を行っているわけではありません。これは私にとって非常に奇妙なエラーです。

これは私が見たスタック トレースです...一度だけ...今まで:

java.lang.IndexOutOfBoundsException
    at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:158)
    at java.lang.StringBuilder.append(StringBuilder.java:312)
    at java.lang.StringBuilder.append(StringBuilder.java:44)
    at java.util.Formatter.outputCharSequence(Formatter.java:1115)
    at java.util.Formatter.doFormat(Formatter.java:1105)
    at java.util.Formatter.format(Formatter.java:1063)
    at java.util.Formatter.format(Formatter.java:1032)
    at java.lang.String.format(String.java:2104)
    at java.lang.String.format(String.java:2078)
    at com.my.app.package.myWebViewClient.onPageFinished(Unknown Source)
    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:270)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:126)
    at android.app.ActivityThread.main(ActivityThread.java:3998)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    at dalvik.system.NativeStart.main(Native Method)

myWebViewClient の onPageFinished で、myWebView に次のスクリプトをロードするように指示します。

String A_VERY_LONG_SCRIPT = "a very long script" +
                                 "that I format" +  \\ some comment!
                                 "in the source code!!" +
                            "some other things" +
                                 "to make this script look really long";
String jsString = String.format("javascript:try{%s}catch(e){}", A_VERY_LONG_SCRIPT);
myWebView.loadUrl(jsString);

String.format 呼び出しには長さ制限などがありますか? それが理由なら、なぜこの 100% の確率、あるいは 80% の確率で再現できないのでしょうか?

この例外を再現できません。すべてのテストでこのスクリプトを何度もロードしているにもかかわらず、一度しか見たことがありません。例外を見て以来、コードを変更していません。さまざまな OS バージョンに対してテストしました。再び例外をトリガーすることはできないようですが、そもそもなぜそれを見たのか疑問に思っています。

では、この IndexOutOfBoundsException の原因は何ですか?

私はAndroid 3.0+向けに開発しています。

4

0 に答える 0