-1

嗨,我的代码正在生成一个 arrayoutofbound 异常,该异常在代码中被捕获,但代码突然终止。我希望代码继续。如果异常捕获 arrayoutofboundexception 或者我做错了什么,请帮助捕获错误。异常是预期的。下面是代码:-

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)
4

4 回答 4

1

ArrayIndexOutOfBoundsException是一个子类,Exception应该在那里被捕获。您的代码段中一定还有其他未显示的内容。请至少显示问题产生的完整方法。此外,请始终在有关抛出异常的问题中包含堆栈跟踪。

于 2012-04-12T03:27:06.120 回答
1

ArrayIndexOutOfBoundsException 正在Error in the GLDAP lookup or error in Domain Mapping被捕获:您可以通过您的消息已打印的事实来判断。你看到的第一个块就是printStackTrace()产生的。

两者不按顺序排列,因为一个打印到标准输出流,另一个打印到标准错误流。

未捕获的异常是StringIndexOutOfBoundsException在您的消息下打印的异常。

于 2012-04-12T03:31:12.613 回答
1

当您尝试访问LoginIDArray[1](即第二个元素)时,您会收到 ArrayOutOfBounds 异常,因为LoginIDArray没有第二个元素。

这意味着您的调用Split("\\\\")没有找到任何"\\"可拆分的内容(两个转义的反斜杠)。CSGLogin不包含两个反斜杠,它有一个。

因此,将您的拆分字符串更改为"\\"

于 2012-04-12T03:32:37.660 回答
1

ArrayIndexOutOfBoundsException是 的子类RuntimeException,因此它是未选中的——这意味着您不必显式地捕获或声明它。在编写良好的代码中,不必捕获它;您肯定在某处有导致异常的索引错误。

于 2012-04-12T03:33:08.290 回答