2013-07-27 184 views
-1

我找不出为什么我的代码没有正确编译..我可以通过代码,直到它到达catch块。它工作,显示消息,所以我知道它正在捕捉错误。但是,它结束了我的程序,说我在同一个地方有同样的错误。我看不到我做错了什么。谢谢你的帮助!!处理Java异常

​​

}

+1

你重新抛出了同样的错误。谁在你原来的“catch”块之外追赶它? – paulsm4

回答

1

你应该重写你的代码是这样的:

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 
} 
+0

啊!谢谢!这固定它,我甚至不必使用try-catch块。再次谢谢你!! :) – Hotsaucejalapeno

7

你重新抛出异常 - throw exec;

+0

不是这个代码中唯一的问题,至少如果'pL'和'uL'是相同的长度。 – hexafraction

0

你正在抛出异常备份。处理例外的地方在于它要等待进行。

0

两个问题:

  1. 你捕获并重新抛出异常;如果你“处理它”,你不需要重新抛出它。

  2. 您正在使用“异常处理”来管理程序中的“正常控制流”。这通常被认为是“糟糕的风格”。你不能控制你的迭代,并通过寻找别的东西来确定“你完成了”吗?

    UPDATE:即NIO的例子

0

代码正确编译,如果你能够运行它。至于在错误结束程序,那是因为你抛出一个异常:

throw exec; 

您已成功例外,但你再扔了。如果没有其他东西抓住它,程序将会以错误结束。

1

您正在重新抛出异常。

另一件事:

if(pass.equals(pL[pos])) { 
    access = "MEMBER"; 

这将导致异常再次出现,即使你不重新抛出它,因为它会尝试用不存在的指标来检查密码列表。