相关疑难解决方法(0)

如何从Android应用程序获取崩溃数据?

如何从我的Android应用程序获取崩溃数据(至少是堆栈跟踪)?至少在使用有线电视检索我自己的设备时,最好是从我在野外运行的应用程序的任何实例,以便我可以改进它并使其更加坚固.

crash android stack-trace

730
推荐指数
19
解决办法
30万
查看次数

是否吞噬了UncaughtExceptionHandler中抛出的错误?

Thread.UncaughtExceptionHandler 声明当处理未捕获的异常的方法本身抛出异常时,该异常将被忽略:

void uncaughtException(Thread t,Throwable e):

当给定线程由于给定的未捕获异常而终止时调用的方法.

Java虚拟机将忽略此方法抛出的任何异常.

但是当我测试它时,JVM没有忽略未捕获的异常处理程序处理的异常:

public static void main(final String args[]) {
    Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread arg0, Throwable arg1) {
            throw new java.lang.RuntimeException("e2");
        }
    });
    throw new RuntimeException("e1");
}
Run Code Online (Sandbox Code Playgroud)

Eclipse控制台输出(JRE 1.7):

异常:从线程"main"中的UncaughtExceptionHandler抛出java.lang.RuntimeException

我发现的另一个奇怪的是我得到的输出不是来自System.err.它似乎完全来自另一个流.我通过重定向System.err来验证这一点System.out,但我仍然得到"红色"输出:

public static void main(final String[] args) {
    System.setErr(System.out);
    System.out.println(System.err == System.out);
    System.err.println("this is black color");
    try {
        throw new Error("test stacktrace color");
    } catch (Throwable e) {
        e.printStackTrace();
    }
    try {
        Thread.sleep(2500);
    } …
Run Code Online (Sandbox Code Playgroud)

java jvm exception-handling uncaught-exception uncaughtexceptionhandler

9
推荐指数
1
解决办法
2695
查看次数