我有一小段Java代碼首先檢查您輸入到IRC命令中的參數是否存在,然後它會選擇要運行的代碼段。我正在通過PircBotX收聽命令,下面描述的命令基本上是通過命令:? list (all)
列出服務器上的所有人員或通道中的所有人員的命令。一個if ... else語句不會返回任何內容
if (argments[1].equalsIgnoreCase("list")) {
CyniChat.printDebug("Listing chosen...");
if (argments[2] != null && argments[2].equalsIgnoreCase("all")) {
CyniChat.printDebug("You've either got 'all' as parameter...");
CyniChat.printDebug(event.getUser().getNick()+" : "+thisChan.getName());
ircResponses.listOutput(event.getUser(), event.getBot(), thisChan.getName(), true);
return;
} else {
CyniChat.printDebug("Or you don't....");
CyniChat.printDebug(event.getUser().getNick()+" : "+thisChan.getName());
ircResponses.listOutput(event.getUser(), event.getBot(), thisChan.getName(), false);
return;
}
}
現在,關於這個陳述奇怪的是,在執行第一調試語句,以便在控制檯輸出「清單選擇......」,那就是它輸出的唯一的事情。當我在IRC中運行:? list
時,沒有其他調試語句被執行。然而當我運行:? list all
時,一切似乎都運行良好,這些語句按照常規和東西執行。
在所有可能性中,我可能只是在某處發現了一個非常小的邏輯錯誤,而我發現這是不可能發現的。如果任何人有任何想法如何解決這種情況,幫助將不勝感激。
謝謝。
我懷疑是拋出了一個錯誤,並且你有一個「catch」塊,在不打印錯誤的情況下忽略它。你能證明情況並非如此嗎? –
我的猜測是日誌不是「沖洗」。你有沒有嘗試登錄到另一個框架,或訴諸System.out.println()? – JustinKSU
我同意tieTYT。我的猜測是參數的長度爲2,因此參數[2]拋出一個ArrayIndexOutOfBoundsException,並且你有一個catch(Exception){},它會捕獲它並忽略它。永遠不要發生異常永遠不要忽視它們。如果你不能處理例外,讓它冒泡。使用調試器一步一步地執行代碼將確認它。 –