2012-12-27 1 views
0

Google.Play에서 캐치되지 않는 예외에 대한 통계가 있습니다. 예외에 대한 추가 정보를 추가 할 방법이 있는지 알고 싶습니다. Google.Play에 표시됩니다 (제 3 자 오류보고 서비스를 사용할 수 없기 때문에).캐치되지 않는 예외에 대한 추가 정보

이 나는 ​​약 Thread.setUncaughtExceptionHandler을 알고 난 예를 들어, 내 사용자 지정 예외 메시지와

public void uncaughtException (Thread thread, Throwable ex) { 
    throw new CustomException(ex, "extraData"); 
} 

같은 것을 쓸 수 있습니다 가정합니다.

그러나 이것을 달성하는 다른 방법이 있습니까?

답변

1

public class CustomException extends Exception 
{ 
    public CustomException(Throwable cause, String message) 
    { 
     super(message, cause); 
    } 
} 
+0

예, 메시지가 추가 정보를 전달하는 유일한 방법 인 것 같습니다. 주요 질문은 이러한 예외를 잡는 방법입니다. – marwinXXII

1

ACRA을 사용할 수 있습니다. Google Play 충돌 보고서보다 많은 정보를 제공 할뿐만 아니라 보고서에 custom data을 쉽게 추가 할 수 있습니다.

+0

Google에서이 정보를 볼 필요가 있습니다. 다른 서비스가 아닌 Google 문서 도구 – marwinXXII

0

여기에 요점을 놓치고 싶습니다. 포착되지 않은 예외에 정보를 추가하려면 예외를 catch해야합니다. 어디에서 어떻게 예외를 잡을 지 알게되면 올바른 방법은 예외를 올바르게 처리하여 사용자 경험을 방해하지 않도록하는 것입니다.

오류 조건을 간과하고 오류 조건을 처리하지 않기 때문에 캐치되지 않는 예외가 발생합니다. 오류를 처리하면 걱정할 예외가 없습니다.

가능한 오류 조건을 알고 있으면 잘 작동하는 프로그램을 작성하는 것이 기본입니다. 오류 및 상태 코드를 알지 못하는 코드를 계속 작성하면 catch되지 않는 예외에서 자주 중단되는 혼란이 발생합니다. 예외 및 오류 처리에는 많은 시간과 코드가 필요하지만 무시할 수없는 프로그래밍의 일부일뿐입니다.

+0

포인트는 추후 조사를 위해 추가 정보를 추가 할 하나의 예외 처리기를 갖는 것입니다. 테스트 환경에서 재생산되지 않지만 프로덕션 환경에있는 Google.Play에서 오류가 발생하므로 (프로덕션 자체가 아닌 프로덕션 웹 서비스에서 문제가 될 수 있음) 필요합니다. 그리고 이러한 예외가 발생하는 이유를 알아야하고 이에 대한 추가 정보가 필요합니다. – marwinXXII

+0

try {...} catch (Throwable th) {...} 블록 내에서 수행하는 모든 작업을 차단하십시오. onCreate, onResume, onPause, onBackPressed 등 여러 엔트리 포인트가 있기 때문에 단일 장소가 없습니다. 자신의 코드가 제어 될 때마다이 작업을 수행해야합니다. 하지만 잘못된 데이터를 API에 전달할 때 상황을 해결하지 못해도 UI 스레드가 예외를 throw합니다. – Torben

+0

모든 것을'try {} catch {}'에 넣고 싶지 않습니다. 왜냐하면 try-catch도 필요한 백그라운드 작업이 있기 때문입니다. 단일 catch 지점으로 사용할 수있는 스레드 예외 처리기 (또는 defaultHandler)에 대해 작성했습니다. 내 질문은 처리기에서 예외를 throw하여 Google에 추가 데이터를 보내도록하는 것입니다. 재생. 그리고 거기에 대안이 있습니다. 스레드 처리기 당 – marwinXXII