Java StringBuilder.delete以有效长度失败

Java StringBuilder.delete以有效长度失败,java,Java,我有一个运行在Tomcat中的webapp,它正在抛出一个异常,但我无法理解该异常是如何/为什么抛出的,因为代码行似乎受到if语句的保护,以检查长度和内容 例外情况是: java.lang.StringIndexOutOfBoundsException at java.lang.AbstractStringBuilder.delete(Unknown Source) at java.lang.StringBuilder.delete(Unknown Source) at com.thisco.D

我有一个运行在Tomcat中的webapp,它正在抛出一个异常,但我无法理解该异常是如何/为什么抛出的,因为代码行似乎受到if语句的保护,以检查长度和内容

例外情况是:

java.lang.StringIndexOutOfBoundsException
at java.lang.AbstractStringBuilder.delete(Unknown Source)
at java.lang.StringBuilder.delete(Unknown Source)
at com.thisco.DoSomething(MyItem.java:785)
上列代码a为:

784: if (whereClause.toString().endsWith(" AND "))
785:    whereClause.delete(whereClause.length() - 5, 5);
你知道怎么会这样吗?
谢谢

StringBuilder.delete方法包含两个参数,一个是
开始
结束
索引。在您的情况下,如果StringBuilder的长度大于10,则开始索引将大于结束索引(例如,如果长度=20,开始=15,结束=5),这将引发
StringIndexOutOfBoundsException
。我认为您要做的是从末尾删除字符串,在这种情况下,您应该将第785行替换为
whereClause.delete(whereClause.length()-5,whereClause.length())

delete
无法按您认为的方式工作:谢谢!我有.Net背景。