Ich habe an einem Framework für mehrere Anwendungen gearbeitet, die mehrstufige Protokollierung implementiert. Es wird hauptsächlich in internen Anwendungen verwendet, um die Kommunikation mit anderen Geräten zu testen, wird jedoch auch in einigen Anwendungen verwendet, die wir verteilen werden.Gibt es eine Möglichkeit Code nach einer nicht abgefangenen Ausnahme in iOS auszuführen?
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 ist Ausnahmen zu fangen unhandled app-breit, ich denke, es wäre so etwas wie wäre:
appDidReceiveUnhandledException:(NSException *)exception
{
//write log to disk
//append exception info to log file
//rethrow exception
}
Wenn jemand mir Einsicht oder Anregungen geben, ob dies möglich ist, es würde sehr geschätzt werden.
'@try {} @catch (NSException * ex) {}' zur Rettung. Oder vielleicht eine Methode, die auf "NSException" umschaltet? –
Siehe [NSSetUncaughtExceptionHandler] (https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html) (obwohl es nicht besonders zuverlässig ist). –
Siehe [hier] (http://stackoverflow.com/a/12268397/581994). –