2013-07-27 221 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"; 

這將導致異常再次出現,即使你不重新拋出它,因爲它會嘗試用不存在的指標來檢查密碼列表。