キャッチされていない例外、キャッチされた例外、またはカスタム例外があった場合に、ユーザーをエラーページにリダイレクトしたいクラスがあります。エラーメールもフリックしたい。(私が通知されるように)。
このクラス内の現在のビュー コントローラーにアクセスできません (キャッチされない例外の場合)。デリゲートリスナーでトリガーされるためonUncaughtException(NSException* exception)
です。
現在のView Controllerにアクセスするにはどうすればよいですか、またはそれが失敗すると、ユーザーをモーダルにエラーView Controllerにリダイレクトできますか?
#import "ErrorHelper.h"
#import "ErrorViewController.h"
#import "Global.h"
#import "AppDelegate.h"
@implementation ErrorHelper
+(void) handleUncaughtError:(NSException*) exception
{
NSLog(@"Uncaught exception occurred!");
[self sendErrorEmailIfAppropriate:exception :nil];
[self redirectToErrorPage];
}
+(void) handleCaughtError:(NSException*) exception
{
NSLog(@"Error caught!!");
[self sendErrorEmailIfAppropriate:exception :nil];
[self redirectToErrorPage];
}
+(void) handleCaughtCustomError:(NSString*) ref :(NSString*) details
{
NSLog(@"Custom error caught!!");
//can do conditional branching on @ref, to do appropriate action.
[self sendErrorEmailIfAppropriate:nil :details];
[self redirectToErrorPage];
}
+(void) sendErrorEmailIfAppropriate:(NSException*) exception :(NSString*)details
{
if([[Global get] isInTestMode] || [[Global get] isInLiveMode]) {
bool isCustomException = details != nil;
}
}
+(void) redirectToErrorPage
{
/*Try redirect user to error page
E.G:
-There's been an error, our App Dev team will try and resolve the issue for you
-Regards -Dev team
*/
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
}
@終わり