51 lines
1.9 KiB
Objective-C
51 lines
1.9 KiB
Objective-C
//
|
|
// IfishUncaughtExceptionHandler.m
|
|
// Ifish
|
|
//
|
|
// Created by imac on 17/2/28.
|
|
// Copyright © 2017年 lianlian. All rights reserved.
|
|
//
|
|
|
|
#import "IfishUncaughtExceptionHandler.h"
|
|
|
|
|
|
NSString *applicationDocumentsDirectory(){
|
|
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
|
|
}
|
|
//崩溃时的回调函数
|
|
void UncaughtExceptionHandler(NSException *exception){
|
|
NSArray *arr = [exception callStackSymbols];
|
|
// 崩溃的原因 可以有崩溃的原因(数组越界,字典nil,调用未知方法...) 崩溃的控制器以及方法
|
|
NSString *reason = [exception reason];
|
|
NSString *name = [exception name];
|
|
NSString * url = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[arr componentsJoinedByString:@"\n"]];
|
|
NSString *path = [applicationDocumentsDirectory() stringByAppendingString:@"Exception.txt"];
|
|
[url writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
|
|
|
}
|
|
|
|
@implementation IfishUncaughtExceptionHandler
|
|
|
|
- (NSString *)applicationDocumentsDirectory {
|
|
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
|
|
}
|
|
|
|
+ (void)setDefaultHandler {
|
|
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
|
|
}
|
|
|
|
+ (NSUncaughtExceptionHandler *)getHandler {
|
|
return NSGetUncaughtExceptionHandler();
|
|
}
|
|
|
|
+ (void)TakeException:(NSException *)exception {
|
|
NSArray * arr = [exception callStackSymbols];
|
|
NSString * reason = [exception reason];
|
|
NSString * name = [exception name];
|
|
NSString * url = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[arr componentsJoinedByString:@"\n"]];
|
|
NSString * path = [applicationDocumentsDirectory() stringByAppendingPathComponent:@"Exception.txt"];
|
|
[url writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
|
}
|
|
|
|
@end
|