我很困惑這個try/catch語句try/catch語句和循環控制
public int MakeMove() {
int x = 0; //counter for moves
try {
// tests to see if potential move has been reached
if (board[currentRow + (vertical[x])][currentColumn + (horizontal[x])] != 0) {
// increments x until a good move is reached.
while ((board[currentRow + (vertical[x])][currentColumn + (horizontal[x])] != 0)) {
x++;
if (x == 8) { //breaks if all moves are tried
return 1;
}
}
}
}
//should catch any tries to move piece off board, catches the exception and increments x
catch(ArrayIndexOutOfBoundsException e) {
x++;
if(x == 8) {//breaks if all moves are tried
return 1;
}
}
應如何工作的:水平[]和垂直[]是兩個int []裏每個持有價值國際象棋騎士可能的舉動,即2水平和1垂直是一舉。然後它應該給「廣場」分配一個非零的莫文字。 try/catch位應該抓住任何移出的棋盤,增加x,然後再次通過循環。但是,只要它通過聲明,它不會再經歷第一次;相反,它會轉到第二個if併產生一個異常。我不確定哪種說法會以這種方式返回控制權。
只是爲了將來的設計,您不應該將異常用作正常程序邏輯的一部分。 – 2011-03-30 19:35:32
+1 Chris。 @Alex,你想以這樣一種方式來構建你的代碼,即不會發生異常。他們是EXCEPT,而不是期望。 :-) – corsiKa 2011-03-30 19:37:48
永遠不要使用try-catch異常處理作爲流程控制結構。僅用於異常處理。恕我直言,這是糟糕的Java代碼。 – PeterMmm 2011-03-30 19:38:54