Java Catch OutOfMemoryError

| | Comments (0) | TrackBacks (0)


在撰寫 Java 程式時,遇到 java.lang.OutOfMemoryError Heap Memroy爆掉時,如果要額外作一些處理,可以透過以下二種方法

方法一:
try{ //new test().run(); // 會產生outofmemory的 code throw new java.lang.OutOfMemoryError(); }catch ( final OutOfMemoryError e ){ System.out.println("Exceptin 攔截成功了!!"); }
方法二
try{ //new test().run(); // 會產生outofmemory的 code throw new java.lang.OutOfMemoryError(); }catch(Exception ex){ System.out.println("這段 code 會被執行嗎?"); }finally { System.out.println("執行 finally"); }

方法一可以將 Exception 整個攔截下來,並且程式會繼續執行。但是要留意事,如果記憶體沒有正常被釋放,則很快的程式還是會因為 Heap 不足再度爆掉。

方法二裡的 catch 區段程式並不會被執行,而會直接執行 finally 裡的 code ,並且會再往上層拋 java.lang.OutOfMemoryError 的 Exception

一般而言,如果是 Java AP 如果在預知 Memory 會爆掉的地方給予適當的處理,處理方法如發信、寫 Log 或則丟訊息給 User ,這對於使用者而言應該是比較人性化的^^。至於要使用那一種的方式來處理端看需求而定。

0 TrackBacks

Listed below are links to blogs that reference this entry: Java Catch OutOfMemoryError.

TrackBack URL for this entry: http://blog.db.idv.tw/cgi-bin/mt/mt-tb.cgi/53

Leave a comment