如何解释a标签
java.lang.StringIndexOutOfBoundsException: length=30278; regionStart=6877; regionLength=-12
如何复现以下异常?
length
是正数,regionStart
是正数且小于length
,- 而
regionLength
是负数?
这些属性到底是什么意思?在此异常的文档中并没有提到。
我只知道 java.lang.StringIndexOutOfBoundsException: String index out of range: X
,其中X
是一个负整数。可以通过以下方式复现:
String s = "hello world";
String chunk = s.substring(5, -8);
例如。
我问这个问题是因为在我的安卓应用程序中会抛出这样的异常。但是它很少被抛出。否则我会设置一个断点并查看发生了什么。
java.lang.StringIndexOutOfBoundsException: length=30278; regionStart=6877; regionLength=-12
at java.lang.String.startEndAndLength(String.java:298)
at java.lang.String.substring(String.java:1087)
...
my app specific calls here
...
at android.view.View.performClick(View.java:5217)
at android.view.View$PerformClick.run(View.java:21342)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
据我所知,导致此异常的操作是什么,我已在该位置设置了断点并打开了String
类定义(因为Android有时使用标准java类的模拟)。但是当调试器停在那里时,String
类中没有包含startEndAndLength
方法...
regionLength
,这表明它是通过throw new StringIndexOutOfBoundsException("length=" + length + ", regionStart=" + regionStart + ", regionLength=" + regionLength);
在该类之外创建的。它实际上是从哪里抛出的?你能提供一些[mcve]和stacktrace吗? - Pshemo