我正在編寫應用程序,並且需要捕獲所有現有異常,包括已檢查和未經檢查的異常。在應用程序終止之前是否可以捕獲未經檢查的異常,並將它們寫入文件中?在java中捕獲未經檢查的異常
回答
在Java中捕獲未經檢查的異常可能比它看起來更棘手,因爲它們是運行時異常。但是,請記住,您不必捕獲運行時/未經檢查的異常;只檢查異常。這是一個不好的做法,但實際上它們都是extend Throwable
,使用catch Throwable
可能是一種方法。但是,您可能需要查看以下文檔http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
如果您想將它們寫入Android中的文件,然後在catch塊中,您必須獲取異常消息並寫入該消息(一個字符串)到文件中,使用Android的FileWriter API之一。但請記住,catch bock應該捕獲所有類型爲Throwable
的異常,儘管這可能非常難看,因爲這將涵蓋Java中大多數未經檢查的異常。
兩個Error
和Exception
延長Throwable
:
public static void main(String args[]) {
try {
new Test().test();
} catch (Throwable t) {
t.printStackTrace(System.err);
}
}
由@ u6f6o提出的觀點 - 你只能這樣做在main
因爲有些Throwable
S的(例如OutOfMemoryError
)意味着你的JVM可能是一個非常不穩定的狀態。
使用Exception
類來捕獲你的異常(這個類是父類)並將它放入一個數據結構中以存儲它們,然後將它們寫入文件中。
http://docs.oracle.com/javase/7/docs/api/index.html?java/lang/Exception.html
http://docs.oracle.com/javase/7/docs/api/index.html?java/io/OutputStreamWriter.html
你可以使用
Thread.setDefaultUncaughtExceptionHandler
見:http://www.tutorialspoint.com/java/lang/thread_setdefaultuncaughtexceptionhandler.htm 或http://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml
+1爲答案,允許他爲每個線程的例外創建自定義處理程序 –
可以趕上catch塊未經檢查的異常。
像
try {
int i = 9/0;
} catch (ArithmeticException d) {
d.printStackTrace();
}
- 1. 未經檢查的異常
- 2. 將未經檢查的異常包裝到Java中的已檢查異常中
- 3. Java異常未被捕獲?
- 4. Java異常未被捕獲
- 5. Java異常未捕獲
- 6. Java異常未捕獲?
- 7. java - 異常未被捕獲
- 8. 經過或未經檢查的異常
- 9. 捕獲未經授權的異常
- 10. 在java中拋出內部對象 - 未經檢查的異常
- 11. 在Java中捕獲異常
- 12. 在Java中捕獲異常
- 13. Java:捕捉異常 - 未檢查與檢查
- 14. 在未捕獲的異常
- 15. Java中的未經檢查的異常:從Error或RuntimeException繼承?
- 16. 是不是一個在try語句中被捕獲的未經檢查的異常在Java中被檢查的異常?
- 17. GWT/JAVA未捕獲的異常逃脫
- 18. 「未處理的檢查異常的拋出異常」在Java中
- 19. 理解捕獲檢查的異常
- 20. 在Firefox中未捕獲的異常
- 21. Java:未捕獲異常錯誤?
- 22. 未捕獲的異常「NSFileHandleOperationException」
- 23. 未捕獲的異常
- 24. 未捕獲的異常 'MongoConnectionException'
- 25. 未捕獲的異常:java.security.AccessControlException
- 26. Node.js未捕獲的異常
- 27. HighCharts未捕獲的異常
- 28. Android未捕獲的異常
- 29. 未捕獲的異常:java.lang.ClassNotFoundException:
- 30. HybridIgniter未捕獲的異常
捕獲的Throwable是很醜陋。像OutOfMemoryError之類的錯誤也擴展了Throwable,強烈建議不要捕獲它們,因爲在發生此錯誤後,您的JVM可能處於不穩定狀態。 – u6f6o
我還可以在沒有在代碼中寫入try/catch的情況下捕獲異常嗎? – user2086174
@ user2086174 - 第 – OldCurmudgeon