这闪退异常无拦截,回调没执行
wscqs opened this issue · 6 comments
wscqs commented
如下:
[NSMutableArray arrayWithArray:@{}];
与
[NSDictionary setValue:nil forKey:@"aa"];
jezzmemo commented
你初始化的代码是不是有问题?贴出来看看
wscqs commented
[JJException configExceptionCategory: JJExceptionGuardArrayContainer | JJExceptionGuardNSNotificationCenter | JJExceptionGuardNSStringContainer | JJExceptionGuardDictionaryContainer | JJExceptionGuardUnrecognizedSelector];//除了JJExceptionGuardNSTimer | JJExceptionGuardKVOCrash
[JJException startGuardException];
[JJException registerExceptionHandle:self];
jezzmemo commented
[JJException registerExceptionHandle:self];
这是弱引用,注意宿主的生命周期,测试异常的代码在setup之后
wscqs commented
你就测试下。 [NSMutableArray arrayWithArray:nil]; 这样闪退会回调。 我给的代码:[NSMutableArray arrayWithArray:@{}];直接闪退,不会回调handleCrashException
jezzmemo commented
[NSMutableArray arrayWithArray:@{}];
API的设计是数组类型的,你强行给字典类型,所以是系统抛出来的异常,我们并没有做类型检查
[NSDictionary setValue:nil forKey:@"aa"];
这个调用直接走到了NSKeyValueCoding的方法了,而且是实例化方法,报了forUndefinedKey的错误,我们并没有hook object forUndefinedKey这个方法,所以直接运行异常了
wscqs commented
[NSMutableArray arrayWithArray:@{}]; 字典是服务端返回的,所以我才发现这个坑的,我意思这种不可控的异常最好能尽量处理。谢谢