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% 的时间重现这个?

我无法重现此异常。即使我在每次测试中多次加载此脚本,我也只见过一次。自从看到异常后,我没有更改代码。我已经针对不同的操作系统版本进行了测试。我似乎无法再次触发异常,但我想知道为什么我一开始就看到了它。

那么,是什么导致了这个 IndexOutOfBoundsException ???

我正在为 Android 3.0+ 开发。

4

0 回答 0