2013-08-16 31 views
-1

當數組超出邊界時,有沒有辦法跳過當前命令?當數組超出邊界時跳過而不是終止程序(Java)

memory[count] = allProcesses[processIndex[index]+temp]; 

當數組嘗試訪問不存在的變量時,數組將超出範圍。我只是想打印出錯誤消息並繼續下去,但每次發生時,程序將終止

我已經試過:

try { 
    memory[count] = allProcesses[processIndex[index]+temp]; 
    } catch (Exception e) { 
     System.out.println("Page Fault"); 
     Thread.sleep(2000); 
     } 

以下是錯誤消息:

... 
Adding Process 10, address 48214, page 1868, offset 12, value 550 to memory location 54 
Adding Process 11, address 30649, page 557, offset 13, value 229 to memory location 55 
Adding Process 11, address 46819, page 343, offset 7, value 519 to memory location 56 
Adding Process 11, address 54762, page 94, offset 14, value 425 to memory location 57 
Page Fault 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 726384 
    at MMU.MMUProcess(MMU.java:58) 
    at Driver.main(Driver.java:73) 
+1

當它終止時是否顯示您的「Page Fault」消息?你可以發佈堆棧跟蹤,如果你有一個? –

+0

除此之外,errormessage將有很大的幫助。我會說你應該在數據被用作索引之前對數據進行清理。 –

+0

如果您發佈了更大的代碼示例並解釋了它與預期行爲的不同之處,它也會有所幫助。 – Antimony

回答

2

我相信,如果有下面的代碼的錯誤時拋出爲你捕捉異常的程序將不會終止:

try { 
    memory[count] = allProcesses[processIndex[index]+temp]; 
    } catch (Exception e) { 
     System.out.println("Page Fault"); 
     Thread.sleep(2000); 
     } 

我相信這個代碼的上面或下面有一些其他代碼,它沒有封裝在try/catch下,並拋出ArrayIndexOutOfBound異常。

0

我懷疑這是因爲另一個原因而終止。例如,下面的代碼:

class Example { 
    public static void main(final String[] args) { 
     int[] array = new int[3]; 
     array[0] = 1; 
     array[1] = 2; 
     array[2] = 3; 
     try { 
      array[3] = 4; 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
     System.out.println("I didn't die"); 
    } 
} 

產生這樣的輸出:

java.lang.ArrayIndexOutOfBoundsException: 3 
I didn't die 
0

這是一個未捕獲的異常,在mmu.java:58導致終止,嘗試捕獲該行並打印堆棧跟蹤,這應該有助於解決問題。

相關問題