2013-08-19 32 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(); 
     }