我找不出为什么我的代码没有正确编译..我可以通过代码,直到它到达catch块。它工作,显示消息,所以我知道它正在捕捉错误。但是,它结束了我的程序,说我在同一个地方有同样的错误。我看不到我做错了什么。谢谢你的帮助!!处理Java异常
}
我找不出为什么我的代码没有正确编译..我可以通过代码,直到它到达catch块。它工作,显示消息,所以我知道它正在捕捉错误。但是,它结束了我的程序,说我在同一个地方有同样的错误。我看不到我做错了什么。谢谢你的帮助!!处理Java异常
}
你应该重写你的代码是这样的:
int pos = -1;
...
for (int i=0;uL.length; i++)
{
if(user.equals(uL[i])) { pos=i; break; }
}
...
if(pos==-1)
{
// user not found
} else {
// test the pass with pos as index
}
啊!谢谢!这固定它,我甚至不必使用try-catch块。再次谢谢你!! :) – Hotsaucejalapeno
你正在抛出异常备份。处理例外的地方在于它要等待进行。
两个问题:
你捕获并重新抛出异常;如果你“处理它”,你不需要重新抛出它。
您正在使用“异常处理”来管理程序中的“正常控制流”。这通常被认为是“糟糕的风格”。你不能控制你的迭代,并通过寻找别的东西来确定“你完成了”吗?
UPDATE:即NIO的例子
代码是正确编译,如果你能够运行它。至于在错误结束程序,那是因为你抛出一个异常:
throw exec;
您已成功抓例外,但你再扔了。如果没有其他东西抓住它,程序将会以错误结束。
您正在重新抛出异常。
另一件事:
if(pass.equals(pL[pos])) {
access = "MEMBER";
这将导致异常再次出现,即使你不重新抛出它,因为它会尝试用不存在的指标来检查密码列表。
你重新抛出了同样的错误。谁在你原来的“catch”块之外追赶它? – paulsm4