java中Error和Exception用法上有什么區(qū)別

順便提一句, 和Exception 相對應(yīng)的,還有Error,Error(錯誤)表示系統(tǒng)級的錯誤和程序不必處理的異常,是JRE(java運行環(huán)境)的內(nèi)部錯誤或者硬件問題,比如,另外某一處地方的bug引起的內(nèi)存溢出,內(nèi)存資源不足等,OutOfMemoryError,對這類錯誤,程序基本無能為力,比如下例中,catch不被執(zhí)行(其實虛擬機是有能力執(zhí)行的,否則finally為什么被執(zhí)行?但就是這原則,意味著,程序員們不要試圖在catch中做什么,你做了,我也不執(zhí)行,因為是Error,而不是Exception)只能退出。
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
例:

public class Test {
/* maxMemory將返回java虛擬機所能返回的最大可用內(nèi)存。0.92可以, 0.93就報錯 */
    int size_Make_to_win = (int) (Runtime.getRuntime().maxMemory() * 0.93);
    public void allo() {
        byte[] data1 = new byte[size_Make_to_win];
    }
    public static void main(String[] args) {
        Test t = new Test();
        try{
        t.allo();
        }
        catch(Exception e)
        {
            System.out.println(e+"qqq");
        }
        finally
        {
            System.out.println("in finally");
        }

    }
}

輸出結(jié)果:

in finally
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Test.allo(Test.java:5)
    at Test.main(Test.java:10)