2013-08-19 72 views
-1

我正在編寫應用程序,並且需要捕獲所有現有異常,包括已檢查和未經檢查的異常。在應用程序終止之前是否可以捕獲未經檢查的異常,並將它們寫入文件中?在java中捕獲未經檢查的異常

回答

0

在Java中捕獲未經檢查的異常可能比它看起來更棘手,因爲它們是運行時異常。但是,請記住,您不必捕獲運行時/未經檢查的異常;只檢查異常。這是一個不好的做法,但實際上它們都是extend Throwable,使用catch Throwable可能是一種方法。但是,您可能需要查看以下文檔http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

如果您想將它們寫入Android中的文件,然後在catch塊中,您必須獲取異常消息並寫入該消息(一個字符串)到文件中,使用Android的FileWriter API之一。但請記住,catch bock應該捕獲所有類型爲Throwable的異常,儘管這可能非常難看,因爲這將涵蓋Java中大多數未經檢查的異常。

2

兩個ErrorException延長Throwable

public static void main(String args[]) { 
    try { 
    new Test().test(); 
    } catch (Throwable t) { 
    t.printStackTrace(System.err); 
    } 
} 

由@ u6f6o提出的觀點 - 你只能這樣做在main因爲有些Throwable S的(例如OutOfMemoryError)意味着你的JVM可能是一個非常不穩定的狀態。

+0

捕獲的Throwable是很醜陋。像OutOfMemoryError之類的錯誤也擴展了Throwable,強烈建議不要捕獲它們,因爲在發生此錯誤後,您的JVM可能處於不穩定狀態。 – u6f6o

+0

我還可以在沒有在代碼中寫入try/catch的情況下捕獲異常嗎? – user2086174

+0

@ user2086174 - 第 – OldCurmudgeon

0

可以趕上catch塊未經檢查的異常。

try { 
      int i = 9/0; 

     } catch (ArithmeticException d) { 
      d.printStackTrace(); 
     }