未捕获ArrayOutofBound异常

时间:2012-04-12 03:18:02

标签: java exception

我的代码是生成一个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)

4 个答案:

答案 0 :(得分:1)

ArrayIndexOutOfBoundsExceptionException的子类,应该在那里捕获。必须有一些其他内容未在您的代码段中显示。请至少显示问题产生的完整方法。另外,请始终在有关抛出异常的问题中包含堆栈跟踪。

答案 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)

ArrayIndexOutOfBoundsExceptionRuntimeException的子类,所以它未经检查 - 这意味着您不必明确地捕获它或声明它。在编写良好的代码中,没有必要抓住它;肯定你有一个导致异常的索引错误。