我找不出爲什麼我的代碼沒有正確編譯..我可以通過代碼,直到它到達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