我正在编写应用程序,并且需要捕获所有现有异常,包括已检查和未经检查的异常。在应用程序终止之前是否可以捕获未经检查的异常,并将它们写入文件中?在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