-1

こんにちは私のコードは、コードでキャッチされた arrayoutofbound 例外を生成していますが、コードは突然終了します。コードを続行したいです。arrayoutofboundexception が Exception によってキャッチされた場合、または何か間違ったことをしている場合は、エラーをキャッチするのを手伝ってください。例外が予想されます。以下はコードです:-

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

には 2 番目の要素がないLoginIDArray[1]ため、(2 番目の要素など)アクセスしようとすると ArrayOutOfBounds Exception が発生します。LoginIDArray

これは、への呼び出しで分割するものSplit("\\\\")が見つからないことを意味します"\\"(2 つのエスケープされたバックスラッシュ)。CSGLoginバックスラッシュが 2 つ含まれておらず、1 つ含まれています。

したがって、分割文字列を次のように変更します"\\"

于 2012-04-12T03:32:37.660 に答える
1

ArrayIndexOutOfBoundsExceptionは のサブクラスでRuntimeExceptionあるため、チェックされていません。つまり、明示的にキャッチしたり宣言したりする必要はありません。適切に作成されたコードでは、それをキャッチする必要はありません。確かに、例外の原因となっているインデックスエラーがどこかにあります。

于 2012-04-12T03:33:08.290 に答える
1

ArrayIndexOutOfBoundsExceptionのサブクラスでExceptionあり、そこでキャッチする必要があります。スニペットに表示されていない何か他のことが起こっているに違いありません。少なくとも問題の原因となっている完全な方法を示してください。また、スローされた例外に関する質問には、常にスタック トレースを含めてください。

于 2012-04-12T03:27:06.120 に答える
1

ArrayIndexOutOfBoundsException キャッチされています: メッセージが印刷されているという事実からわかりますError in the GLDAP lookup or error in Domain Mapping。あなたが見ている最初のブロックはまさにprintStackTrace()​​生成するものです。

1 つは標準出力ストリームに出力され、もう 1 つは標準エラー ストリームに出力されるため、この 2 つは順番どおりではありません。

キャッチされない例外はStringIndexOutOfBoundsException、メッセージの下に表示される です。

于 2012-04-12T03:31:12.613 に答える