-1

我正在编写应用程序,我需要捕获所有现有异常,包括已检查和未检查的异常。例如,是否可以在应用程序终止之前捕获未经检查的异常并将它们写入文件?

4

5 回答 5

2

两者ErrorException扩展Throwable

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

从@u6f6o 的观点来看 - 你应该只这样做,main因为一些Throwables (例如OutOfMemoryError)意味着你的 JVM 可能处于非常不稳定的状态。

于 2013-08-19T08:35:57.597 回答
1

你可以使用

Thread.setDefaultUncaughtExceptionHandler

请参阅: http ://www.tutorialspoint.com/java/lang/thread_setdefaultuncaughtexceptionhandler.htm 或http://www.javamex.com/tutorials/exceptions/exceptions_uncaught_handler.shtml

于 2013-08-19T08:42:52.363 回答
0

在 Java 中捕获未经检查的异常可能比看起来更棘手,因为它们是运行时异常。但是,请记住,您不必捕获运行时/未经检查的异常;只检查异常。这是一种不好的做法,但几乎所有这些做法extend Throwable和使用都catch Throwable可能是一种方法。但是,您可能想查看以下文档http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

如果您想将它们写入 Android 中的文件,那么在 catch 块中,您必须使用适用于 Android 的 FileWriter API 之一获取异常消息并将该消息(字符串)写入文件。但是请记住,catch bock 应该捕获所有 type 的异常Throwable,即使这可能非常难看,因为这将涵盖 Java 中的大多数未经检查的异常。

于 2013-08-19T08:35:05.673 回答
0

您可以在 catch 块中捕获未经检查的异常。

喜欢

try {
            int i = 9 / 0;

        } catch (ArithmeticException d) {
            d.printStackTrace();
        }
于 2013-08-19T10:28:00.800 回答
0

使用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

于 2013-08-19T08:40:24.100 回答