2012-04-12 162 views
-1

您好,我的代碼正在生成一個數組outoutof異常,在代碼中捕獲但代碼突然終止。我希望代碼繼續。如果一個arrayoutofboundexception例外的被抓還是我做錯了什麼,請幫助捕捉錯誤.Exception是expected.Below是代碼: -ArrayOutofBound異常未捕獲

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) 
+2

我們可以看到一些輸出嗎? (stacktrace) – trutheality 2012-04-12 03:19:06

+1

正如我的想法 - 它被抓住了。這是另一個例外。 – trutheality 2012-04-12 03:35:51

回答

1

ArrayIndexOutOfBoundsException被捕獲:您可以通過打印您的消息Error in the GLDAP lookup or error in Domain Mapping的事實來判斷。您看到的第一個區塊就是printStackTrace()所產生的區塊。

由於一個打印到標準輸出流而另一個打印到標準錯誤流,因此兩者不合適。

未被捕獲的異常是在您的消息下打印的StringIndexOutOfBoundsException

+0

+1這應該是被接受的答案。編輯 – 2012-04-12 03:35:52

1

ArrayIndexOutOfBoundsException是子類的Exception,應該抓到那裏。您的代碼段中不會顯示其他內容。請至少顯示問題源於的完整方法。此外,請始終在有關拋出的異常的問題中包含堆棧跟蹤。

1

當您嘗試訪問LoginIDArray[1](即第2個元素)時,您會收到ArrayOutOfBounds異常,因爲LoginIDArray沒有第二個元素。

這意味着你要Split("\\\\")呼叫沒有找到任何"\\"由(二逃脫反斜槓)分裂。 CSGLogin不包含兩個反斜槓,它有一個。

所以,你的分割字符串更改爲"\\"

+0

以修正其中一個字符串的錯字 – Robotnik 2012-04-12 03:34:04

1

ArrayIndexOutOfBoundsExceptionRuntimeException一個子類,所以它的選中 - 這意味着你不必明確地將其接住或聲明。在一個寫得很好的代碼中,它不應該被捕獲。當然,你有一個索引錯誤導致異常。