我的代码是生成一个arrayoutofbound异常,它在代码中被捕获但代码突然终止。我希望代码继续。如果一个arrayoutofboundexception被Exception捕获或者我做错了什么,请帮助捕获错误。期望异常.Below是代码: -
try{
CsgLogin=Ldap.getdomain(requesterLoginId);//This returns domain\usernmae
LoginIDArray = CsgLogin.split("\\\\");
requesterLoginId = LoginIDArray[1]; //Exception generated here
} catch(Exception e) {
System.out.println("Error in the GLDAP lookup or error in Domain Mapping");
e.printStackTrace();
}
输出:
java.lang.ArrayIndexOutOfBoundsException: 1
at com.cs.ws.LdapConnect.getdomain(LdapConnect.java:131)
at com.cs.ws.AgentConnector.startOfBreakGlass(AgentConnector.java:476)
at com.cs.ws.AgentConnector.runBreakGlassProcess(AgentConnector.java:208)
at com.cs.ws.MyAccessTimer.main(MyAccessTimer.java:93)
Error in the GLDAP lookup or error in Domain Mapping
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1768)
at com.cs.ws.DomainMap.getDomain(DomainMap.java:21)
at com.cs.ws.AgentConnector.startOfBreakGlass(AgentConnector.java:477)
at com.cs.ws.AgentConnector.runBreakGlassProcess(AgentConnector.java:208)
at com.cs.ws.MyAccessTimer.main(MyAccessTimer.java:93)
答案 0 :(得分:1)
ArrayIndexOutOfBoundsException
是Exception
的子类,应该在那里捕获。必须有一些其他内容未在您的代码段中显示。请至少显示问题产生的完整方法。另外,请始终在有关抛出异常的问题中包含堆栈跟踪。
答案 1 :(得分:1)
ArrayIndexOutOfBoundsException
被抓住:您可以通过打印消息Error in the GLDAP lookup or error in Domain Mapping
来判断。您看到的第一个块就是printStackTrace()
生成的块。
这两个不是有序的,因为一个是打印到标准输出流而另一个是打印到标准错误流。
未被捕获的例外是您邮件中打印的StringIndexOutOfBoundsException
。
答案 2 :(得分:1)
当您尝试访问LoginIDArray[1]
(即第二个元素)时,您将获得ArrayOutOfBounds异常,因为LoginIDArray
没有第二个元素。
这意味着您对Split("\\\\")
的调用未找到任何"\\"
要拆分(两个转义反斜杠)。 CSGLogin
不包含两个反斜杠,它有一个反斜杠。
所以,将您的拆分字符串更改为"\\"
答案 3 :(得分:1)
ArrayIndexOutOfBoundsException
是RuntimeException
的子类,所以它未经检查 - 这意味着您不必明确地捕获它或声明它。在编写良好的代码中,没有必要抓住它;肯定你有一个导致异常的索引错误。