数组越界时跳过而不是终止程序(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)

如果在捕获异常时以下代码中出现异常,我确信程序不会终止:

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

我相信在这段代码的上面或下面还有一些其他代码,它们没有封装在try/catch和抛出ArrayIndexOutOfBound异常下。

我怀疑它是因为另一个原因而终止的。例如,此代码:

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

是mmu.java:58中的一个未捕获异常导致了终止,请尝试捕获该行并打印堆栈跟踪,这将有助于解决问题。

最新更新