Pracuję nad strukturą dla wielu aplikacji, które implementują rejestrowanie wielopoziomowe. Jest używany głównie w aplikacjach używanych do testowania komunikacji z innymi urządzeniami, ale jest również używany w niektórych aplikacjach, które będziemy dystrybuować.Czy istnieje sposób na wykonanie kodu po nieprzechwyconym wyjątku w systemie iOS?
Czy istnieje sposób na przechwycenie nieprzechwyconego wyjątku i natychmiastowe wykonanie kodu w celu zapisania wyjątku do pliku dziennika? W tej chwili klasa Log zapisuje się do pliku co jakiś czas, na przemian między dwoma plikami w przypadku błędu zapisu, itp. Działa to w porządku, ale byłoby wspaniale, gdyby zobaczył, że wystąpił nieobsługiwany wyjątek, napisz dowolny niepisany dziennik wpisów do pliku, zauważ, że wystąpił wyjątek i zapisz jego szczegóły, a następnie zezwól aplikacji na awarię.
Jeśli istnieje jakiś sposób połowu nieobsługiwany wyjątek app-szeroki, to myślę, że byłoby coś takiego:
appDidReceiveUnhandledException:(NSException *)exception
{
//write log to disk
//append exception info to log file
//rethrow exception
}
Jeśli ktoś może mi dać wgląd lub sugestie na temat tego, czy jest to możliwe to, Byłbym bardzo doceniony.
'@try {} @catch (NSException * ex) {}' na ratunek. A może niektóre metody swizzling na 'NSException'? –
Zobacz [NSSetUncaughtExceptionHandler] (https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html) (choć to niezbyt niezawodne). –
Zobacz [tutaj] (http://stackoverflow.com/a/12268397/581994). –