Gibt es eine Möglichkeit, Code nach einer nicht abgefangenen Ausnahme in iOS auszuführen? [Duplikat]

7

Ich habe an einem Framework für mehrere Anwendungen gearbeitet, das die Protokollierung auf mehreren Ebenen implementiert. Es wird hauptsächlich in internen Anwendungen verwendet, um die Kommunikation mit anderen Geräten zu testen, wird aber auch in einigen Anwendungen verwendet, die wir verteilen werden.

Gibt es eine Möglichkeit, eine nicht abgefangene Ausnahme abzufangen und sofort Code auszuführen, um die Ausnahme in der Protokolldatei zu speichern? Im Moment schreibt die Log-Klasse nur gelegentlich in die Datei, wechselt im Falle eines Schreibfehlers usw. zwischen zwei Dateien. Das funktioniert gut, aber es wäre toll, wenn es eine unbehandelte Ausnahme auftreten könnte, schreibe ein ungeschriebenes Protokoll Einträge in Datei, beachten Sie, dass eine Ausnahme aufgetreten ist und protokollieren Sie ihre Details, und erlauben Sie dann die App zum Absturz.

Wenn es eine Möglichkeit gibt, unbehandelte Ausnahmen app-weit zu erfassen, würde ich denken, dass es so etwas wie folgt wäre:

%Vor%

Wenn mir jemand Einblick oder Vorschläge geben kann, ob dies möglich ist oder nicht, würde ich es sehr schätzen.

    
mbuc91 11.03.2013, 21:26
quelle

3 Antworten

17

Sie können einen anwendungsweiten unbehandelten Ausnahme-Handler in Ihrem AppDelegate hinzufügen:

%Vor%

Verweise es in AppDelegate didFinishLaunchingWithOptions as:

%Vor%     
Richard Brown 11.03.2013, 21:30
quelle
3

Sie können Ihren eigenen Ausnahmebehandler festlegen, indem Sie NSSetUncaughtExceptionHandler()

aufrufen

Sie können es Ihnen als App-Delegierten

nennen %Vor%

Wie Sie sehen können, müssen Sie einen Funktionszeiger an eine Funktion wie diese übergeben:

%Vor%     
Luca Bernardi 11.03.2013 21:31
quelle
1

Sie müssen Ihren Ausnahmebehandler festlegen, am besten in Ihrem Anwendungsdelegaten in applicationDidFinishLaunching, dh:

%Vor%     
Zaid Daghestani 11.03.2013 21:31
quelle