How to interpret a
java.lang.StringIndexOutOfBoundsException: length=30278; regionStart=6877; regionLength=-12
or better how to reproduce such an exception where
- lengthis positive,
- regionStartis positive and less than- length
- and regionLengthis negative?
What do these attributes mean at all? They aren't mentioned in the documentation of this exception.
I only know java.lang.StringIndexOutOfBoundsException: String index out of range: X where X is a negative integer.
Reproducable with:
String s = "hello world";
String chunk = s.substring(5, -8);
for example.
Asking because such an exception is thrown in my android app. But it is thrown very seldom. Otherwise I would set a breakpoint and see what is going on there.
        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)
As I know what action can lead to this exception I've set a breakpoint at that position and opened String class definition (because Android uses analogs of standard java classes sometimes) when the debugger stopped there. But the String class didn't contain startEndAndLength method...
 
     
    