3

Wir verwenden Crashlytics in unserer App als Crash-Reporting-Tool. Bei nativen Android-Abstürzen funktioniert es einwandfrei und gruppiert die Abstürze korrekt. Unsere App hat auch wenige Komponenten in reaktionsnativen. Bei den Abstürzen, die in diesen Komponenten auftreten, fangen wir sie ab und protokollieren sie als nicht schwerwiegende Ausnahmen in Crashlytics.Wie effektiv nicht tödliche Ausnahmen in Crashlytics (Fabrics) gruppieren?

public class PlatformNativeModuleCallExceptionhandler implements 
NativeModuleCallExceptionHandler { 
@Override 
public void handleException(Exception e) { 
    try { 
     . 
     . 
     . 
     Crashlytics.logException(new Exception(exceptionString)); 
    } catch (Exception ex) {} 
} 

Abstürze sind immer in Crashlytics Armaturenbrett angemeldet, aber es zeigt alle Abstürze innerhalb einer einzigen Registerkarte. Dies können verschiedene Abstürze der gleichen oder verschiedener reagierender Komponenten sein.

enter image description here

Aus diesem Grund sind wir die Instanzen eines bestimmten Crash, um herauszufinden, nicht in der Lage. Sie müssen jede Instanz des Absturzes manuell durchlaufen.

Ich denke, es nimmt den Namen der Klasse, in der Ausnahme erstellt wird, in diesem Fall PlatformNativeModuleCallExceptionHandler. Ich habe versucht, meine eigene benutzerdefinierte Ausnahmeklasse zu erstellen, aber das hat auch nicht geholfen.

Weiß jemand, wie wir die nicht tödlichen Ausnahmen besser hier gruppieren können? Alle ähnlichen Abstürze sollten mit ihren gesamten Instanzen gruppiert werden.

Antwort

3

Crashlytics verwendet die Methode und die Absturzzeilennummer, um Abstürze zu gruppieren. Wenn Sie also eine Ausnahmebehandlungsmethode für alle Nicht-Fatals haben, werden diese gruppiert. Es gibt derzeit keine Problemumgehung dafür.

+0

Ich habe eine Problemumgehung in meiner Antwort auf diese Frage veröffentlicht. – miguel

2

Crashlytics gruppiert nach der Zeilennummer, für die die Ausnahme generiert wurde, und kennzeichnet sie mit dem Ausnahmetyp. Wenn Sie alle Typen der Ausnahmen kennen, können Sie jede in einer anderen Zeile generieren. Außerdem können Sie Ihre Zeichenfolgen benutzerdefinierten Ausnahmetypen zuordnen, um sie in Crashlytics einfacher identifizieren zu können.

Hier ist ein Beispiel:

public void crashlyticsIsGarbage(String exceptionString) { 
    Exception exception = null; 
    switch(exceptionString) { 
     case "string1": exception = new String1Exception(exceptionString); 
     case "string2": exception = new String2Exception(exceptionString); 
     case "string3": exception = new String3Exception(exceptionString); 
     case "string4": exception = new String4Exception(exceptionString); 
     default: exception = new Exception(exceptionString); 
    } 
    Crashlytics.logException(exception); 
} 

class String1Exception extends Exception { String1Exception(String exceptionString) { super(exceptionString); } } 
class String2Exception extends Exception { String2Exception(String exceptionString) { super(exceptionString); } } 
class String3Exception extends Exception { String3Exception(String exceptionString) { super(exceptionString); } } 
class String4Exception extends Exception { String4Exception(String exceptionString) { super(exceptionString); } } 

BTW, Crashlytics die Meldung String in der Exception ignorieren.