Ich vermute, dass ich diesen Fehler erhalte, weil die Zeichenfolge versucht, einen "Null"-Wert zu unterteilen. Aber würde der Teil "".length() > 0"" dieses Problem nicht beseitigen?
Hier ist das Java-Snippet:
if (itemdescription.length() > 0) {
pstmt2.setString(3, itemdescription.substring(0,38));
}
else {
pstmt2.setString(3, "_");
}
Ich habe diesen Fehler erhalten:
java.lang.StringIndexOutOfBoundsException: String index out of range: 38
at java.lang.String.substring(Unknown Source)
at MASInsert2.itemimport(MASInsert2.java:192)
at MASInsert2.processRequest(MASInsert2.java:125)
at MASInsert2.doGet(MASInsert2.java:219)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:835)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Unknown Source)
Sie müssen wirklich prüfen, ob die Länge der Zeichenkette größer oder gleich 38 ist.
itemdescription
ist kürzer als 38 Zeichen. Deshalb wird die StringOutOfBoundsException
ausgelöst.
Die Überprüfung von .length() > 0
stellt einfach sicher, dass der String
einen Wert hat, der nicht Null ist. Was Sie tun müssen, ist zu überprüfen, ob die Länge lang genug ist. Sie könnten es versuchen:
if(itemdescription.length() > 38)
...