首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小黑娃Henry

    iOS开发-Crash捕捉iOS开发-Crash捕捉

    void UncaughtExceptionHandler(NSException *exception) { NSArray *arr = [exception callStackSymbols 2、自定义NSException //创建异常 NSString *exceptionName = @"hi,我是一个异常"; NSString *excaptionReason = @"我不开心了,所以我要让程序崩溃"; NSDictionary *exceptionUserInfo = nil; NSException *exception = [NSException exceptionName reason:excaptionReason userInfo:exceptionUserInfo]; //抛出异常 @throw exception; 当然NSException

    3.1K20发布于 2021-08-09
  • 来自专栏哈雷彗星撞地球

    RunLoop总结:RunLoop的应用场景(五)阻止App崩溃一次

    void HandleException(NSException *exception) { // 获取异常的堆栈信息 NSArray *callStack = [exception callStackSymbols kCaughtExceptionStackInfoKey]; CrashHandler *crashObject = [CrashHandler sharedInstance]; NSException *customException = [NSException exceptionWithName:[exception name] reason:[exception reason] userInfo 信号捕获崩溃,堆栈信息:%@",callStack); CrashHandler *crashObject = [CrashHandler sharedInstance]; NSException withObject:customException waitUntilDone:YES]; } 第四步,添加让应用起死回生的 RunLoop 代码 - (void)handleException:(NSException

    2.3K31发布于 2018-08-22
  • 来自专栏西二旗一哥

    Some problems with refresh UICollectionView

    collectionView insertItemsAtIndexPaths:indexPaths]; } completion:^(BOOL finished) { }]; } @catch ( NSException collectionView reloadItemsAtIndexPaths:indexPaths]; } completion:^(BOOL finished) { }]; } @catch ( NSException collectionView deleteItemsAtIndexPaths:indexPaths]; } completion:^(BOOL finished) { }]; } @catch ( NSException

    2.4K30发布于 2018-09-30
  • 来自专栏mukekeheart的iOS之旅

    OC学习8——异常处理

    在进行异常捕获时,我们应该遵循“先处理小异常,再处理大异常”的原则,所以在@catch时我们应该将父类异常放在子类异常的后面,像NSException作为所有异常的根异常,应该放在最后处理。 1 @try { 2 // 1 3 [self tryTwo]; 4 } 5 @catch (NSException *exception) { 6 // 2 7 NSString *str = @"abc"; 24 [str substringFromIndex:111]; // 程序到这里会崩 25 } 26 @catch (NSException 大部分时候抛出NSException对象即可,在少部分时候,OC也允许程序员抛出自定义的异常类对象。自定义异常类和普通类的定义没有什么区别,唯一的一点要求就是必须继承自NSException父类。 SomethingException.h,啥都没定义 2 #import <Foundation/Foundation.h> 3 4 @interface SomethingException : NSException

    2.1K60发布于 2018-02-27
  • 来自专栏進无尽的文章

    扒虫篇-崩溃日志解读及Crash收集

    我们可以先了解一下异常 NSException,这对于我们理解崩溃有帮助。NSException掌控着程序的生命,程序的崩溃就是NSException来控制的。 ** NSException** ? 这个样子 其实控制台输出的日志信息就是NSException产生的,一旦程序抛出异常,程序就会崩溃,控制台就会有这些崩溃日志。 1478827158887712.png NSException的实用技巧 1、 若自己封装一套SDK,若要提示哪里出错,那么就可以使用NSException。 就像上面NSException的基本用法中的代码一样。 2、可以用来捕获异常,防止程序的崩溃。当你意识到某段代码可能存在崩溃的危险,那么你就可以通过捕获异常来防止程序的崩溃。 自己收集崩溃信息 苹果给我们提供了异常处理的类,NSException类。这个类可以创建一个异常对象,也可以通过这个类获取一个异常对象。

    3.7K10发布于 2018-09-12
  • 来自专栏小蠢驴iOS专题

    手把手教你使用Bugly收集线上崩溃信息

    config:config]; //捕获 JSPatch 异常并上报 [JPEngine handleException:^(NSString *msg) { NSException *jspatchException = [NSException exceptionWithName:@"Hotfix Exception" reason:msg userInfo:nil]; NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { [Bugly reportException:[NSException url = %@,\n", ErrorString, (long)statusCode, urlStr ]; } 3.然后将详细信息,上传到bugly [Bugly reportException:[NSException %ld,\n url = %@,\n", ErrorString, (long)statusCode, url ]; [Bugly reportException:[NSException

    6.4K30发布于 2018-05-24
  • 来自专栏全栈程序员必看

    AVAudioEngine录音崩溃, reason: ‘format.sampleRate == hwFormat.sampleRate

    0x104a5410c 0x104a5425c 0x1985d1568) libc++abi.dylib: terminating with uncaught exception of type NSException condition is false: format.sampleRate == hwFormat.sampleRate’ terminating with uncaught exception of type NSException condition is false: format.sampleRate == hwFormat.sampleRate’ terminating with uncaught exception of type NSException

    1.7K100编辑于 2022-11-02
  • 来自专栏DannyHoo的专栏

    iOS中防止数组越界之后发生崩溃

    self.count){ @try { return [self__nickyTsui__objectAtIndex:index];         } @catch (NSException *exception self.count){ @try { return [selfmutableObjectAtIndex:index];         } @catch (NSException *exception

    2.4K10发布于 2018-09-13
  • 来自专栏高科技宣传

    iOS Crash不崩溃

    NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); return YES; } (2)解析堆栈信息并上报 void UncaughtExceptionHandler(NSException { id object = nil; @try { object = [self avoidCrashObjectAtIndex:index]; } @catch (NSException anInvocation { @try { [self avoidCrashForwardInvocation:anInvocation]; } @catch (NSException aSelector{ @try { [self avoidCrashDoesNotRecognizeSelector:aSelector]; } @catch (NSException

    2.9K20编辑于 2022-11-07
  • 来自专栏刘笑江的专栏

    iOS 启动连续闪退保护方案

    捕获异常 检测连续闪退,可以通过捕获异常来实现,异常有以下种类: Mach 异常:EXC_CRASH UNIX 信号:SIGABRT NSException 异常:应用层,通过 NSUncaughtExceptionHandler NSException 是使用者在处理 App 逻辑时,用编程的方法抛出。 优缺点 通过 Mach 异常、Unix 信号、NSException 异常来检测闪退,能获得更多的 crash 上下文,但由于 crash 收集框架多使用这些方法,可能会有这样的风险:与第三方 crash 文件损坏:处理文件时如果没有 @try...catch,损坏文件会抛出 NSException 导致 crash 网络返回数据处理异常:比如预期返回数组,但实际返回了字典,对字典对象执行 -objectAtIndex

    2.7K40发布于 2018-05-25
  • 来自专栏刘笑江的专栏

    iOS 启动连续闪退保护方案

    1.捕获异常 检测连续闪退,可以通过捕获异常来实现,异常有以下种类: Mach 异常:EXC_CRASH UNIX 信号:SIGABRT NSException 异常:应用层,通过 NSUncaughtExceptionHandler NSException 是使用者在处理 App 逻辑时,用编程的方法抛出。 每次启动时,如果连续闪退计数 > n,则检测到了连续闪退 启动后,执行一个定时任务,在 5s 后重置计数(如果 App 连续闪退则不会重置) 流程图 优缺点 通过 Mach 异常、Unix 信号、NSException 文件损坏:处理文件时如果没有 @try...catch,损坏文件会抛出 NSException 导致 crash 网络返回数据处理异常:比如预期返回数组,但实际返回了字典,对字典对象执行 -objectAtIndex

    6.5K10发布于 2016-09-28
  • 来自专栏Timhbw博客

    iOS学习巩固笔记-UIWebView/JavaScript

    2.如何抛出异常 抛出异常的两种方式 方式一 @throw [NSException exceptionWithName:@"程序异常" reason:@"异常原因:数组越界" userInfo:nil NSString *info = [NSString stringWithFormat:@"%@找不到方法",NSStringFromSelector(aSelector)]; 下面这种方法是自动抛出的 [NSException ; 3.如何捕获异常 NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler); void UncaughtExceptionHandler(NSException } void UncaughtExceptionHandler(NSException *exception) { //获取异常崩溃信息 NSArray *callStack

    1.6K70发布于 2018-05-03
  • 来自专栏CoderStar

    iOS符号化浅析

    mach_port_allocate -> mach_port_insert_right -> task_set_exception_ports -> 循环等待消息 Unix 信号方式:signal 应用级异常 NSException 其中NSSetUncaughtExceptionHandler值可以捕获到 OC 的异常,Swift 的异常是捕获不到的,一般情况下在捕获 NSException 异常后同时也会捕获到一个对应的 signal signal // 大部分异常就是 SIGTRAP ,OC中的NSException异常对应的也是这个信号。 不传递强行覆盖的后果是,在其之前注册过的日志收集服务写出的 Crash 日志就会因为取不到 NSException 而丢失 Last Exception Backtrace 等信息。 (P.S. iOS 系统自带的 Crash Reporter 不受影响) 详细代码请见KSCrashMonitor_NSException[6],有一个g_previousUncaughtExceptionHandler

    2.6K41编辑于 2022-09-23
  • 来自专栏freesan44

    iOS 钥匙串keychain的应用

    = nil; @try { data = [NSKeyedArchiver archivedDataWithRootObject:value]; } @catch (NSException = [NSKeyedUnarchiver unarchiveObjectWithData:(__bridge NSData *)keyData]; } @catch (NSException

    1.5K10编辑于 2021-12-06
  • 来自专栏freesan44

    iOS 钥匙串keychain的应用

    nil; @try { data = [NSKeyedArchiver archivedDataWithRootObject:value]; } @catch (NSException NSKeyedUnarchiver unarchiveObjectWithData:(\_\_bridge NSData \*)keyData]; } @catch (NSException

    1K40发布于 2021-11-09
  • 来自专栏freesan44

    Xcode忽略指定的异常断点

    shlex # This script allows Xcode to selectively ignore Obj-C exceptions # based on any selector on the NSException callMethodOnException(frame, register, method): return frame.EvaluateExpression("(NSString *)[(NSException

    1.1K20发布于 2021-03-03
  • 来自专栏HelloCode开发者学习平台

    iOS底层学习——KVC下篇

    [self.class accessInstanceVariablesDirectly] ) { @throw [NSException exceptionWithName:@"LGUnknownKeyException ); object_setIvar(self , ivar, value); return; } // 5:如果找不到相关实例 @throw [NSException [self.class accessInstanceVariablesDirectly] ) { @throw [NSException exceptionWithName:@"LGUnknownKeyException

    64130发布于 2021-08-25
  • 来自专栏iOS开发干货分享

    iOS你不知道的事--Crash分析

    ; } 关于Signal参考 我们从上面的函数可以Hook到信息,下面我们开始进行包装处理.这里还是面向统一封装,因为等会我们还需要考虑Signal void LGExceptionHandlers(NSException LGUncaughtExceptionHandle alloc] init] performSelectorOnMainThread:@selector(lg_handleException:) withObject:[NSException 在这里要做两件事 存储,上传:方便开发人员检查修复 处理Crash奔溃,我们也不能眼睁睁看着BUG闪退在用户的手机上面,希望“起死回生,回光返照” - (void)lg_handleException:(NSException - (void)saveCrash:(NSException *)exception file:(NSString *)file{ NSArray *stackArray = [[exception

    2K10发布于 2019-06-01
  • 来自专栏iOS面试技术问题

    iOS进阶_KVC(&KVC赋值取值过程分析&KVC自定义&异常处理)

    [self.class accessInstanceVariablesDirectly]) { NSException * exception = [NSException exceptionWithName [self.class accessInstanceVariablesDirectly]) { NSException * exception = [NSException exceptionWithName

    1.1K41发布于 2020-09-18
  • 来自专栏啄木鸟软件测试

    为什么我说写好测试很重要(二)

    Must be NSException, or a subclass of NSException. * @param ... Must be NSException, or a subclass of NSException. Must be NSException, or a subclass of NSException. * @param ... Must be NSException, or a subclass of NSException.

    63690发布于 2021-08-13
领券