我需要一些帮助.
当我做出"捕捉异常"的事情时,它不会停止阅读更多的行.我该如何防止这种情况?
我喜欢这样:
try { double1 = Double.parseDouble(args[2]); } catch (NumberFormatException e) { e.printStackTrace(); user.sendMessage("Can't parse 3rd argument into a number!"); } if(double1 > 200 || double1 <= 0) { user.sendMessage("Error. Nothing special here."); }
当我得到解析错误的异常时,它将继续读取以读取其他错误预防方法[if(double> 200 || double 1 <= 0){}]并且因为double1不是数字,它将发送出去给执行该操作的用户另一个ERROR字符串.
这是它寻找用户的方式:
消息:无法将第三个参数解析为数字!
消息:错误.这里没什么特别的.
两个错误消息,一个甚至不应该在那里.我怎么做才这样只出现第一个错误?所以它阻止了第二条错误消息?
try { double1 = Double.parseDouble(args[2]); if (double1 > 200 || double1 <= 0) { user.sendMessage("Error. Nothing special here."); } } catch (NumberFormatException e) { e.printStackTrace(); user.sendMessage("Can't parse 3rd argument into a number!"); }
这有效,但它不是一个很好的设计.该NumberFormatException
处理不好,因为你正在登录,然后允许其他代码运行.实际上,您希望它停止执行而不运行其余代码(if
条件),这就是异常应该做的事情 - 要么提前返回,要么传播异常以便在堆栈中进一步处理.