2012-10-02 4 views
0

예외가 발생하면 로그 서버에보고하려고합니다.android에서 전역으로 오류를 catch하는 방법은 무엇입니까?

Thread.setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler)을 사용할 때 java.lang.RuntimeException을 상속 한 예외가 발생했습니다. 하지만 java.lang.Error를 상속 한 하위 클래스를 찾지 못했습니다. (예 : OutOfMemoryError, IOError, ...)

그래서 Runtime.addShutdownHook(Thread hookThread)을 사용하지만 hookThread.run() 메서드는 호출되지 않습니다.

어떻게 안드로이드에서 오류를 세계적으로 잡을 수 있습니까? 다른 프로세스를 사용하고 싶지 않습니다. 단지 로그 서버에서 버그를보고하려고합니다.

죄송합니다 evertyone, 나는 throwable 오류를 지속적으로 잡으려고 노력하고, java.lang.Irror도 알아 냈습니다. UncaughtExceptionHandler.uncaughtException()에서 구현 된 함수를 실행하지 않습니다.

그냥 확인을 위해 인쇄 된 로그입니다.

+0

그냥 적절한 필터로'adb logcat'을 사용할 수 있습니다 ... – axis

+0

네트워크를 통해 서버로 로그를 보내려고합니다. – Hogun

답변

0

해결했습니다. 그냥 내가 실수 였어. 로그 정보를 얻기 위해 Throwable 객체를 처리했습니다. 하지만 Throwable.getCause() 메서드를 사용했습니다. java.long.Error가 발생하면 null입니다.

uncaughtException() 메서드에서 Exeption이 발생하면 정확하게 로그를 인쇄하지 않습니다.

축하합니다.

관련 문제