我有一小段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){},它会捕获它并忽略它。永远不要发生异常永远不要忽视它们。如果你不能处理例外,让它冒泡。使用调试器一步一步地执行代码将确认它。 –