NSException那点事儿

-------最近‘中兴’事件之后,人们对"研发"这个词有了更具体的解释:“先把别人的东西拿来研究清楚了,然后改改...”,不得不说,总结的真好。

何以战胜恐惧?进攻,进攻,不断的进攻!

NSException :NSObject

@property (readonly, copy) NSExceptionName name;
@property (nullable, readonly, copy) NSString *reason;
@property (readonly, copy) NSArray *callStackReturnAddresses


上图中的绿、黄、红三个颜色分别代表我们的三种属性:name、reson、callStackReturnAddress

我们先把name拎出来讲一讲


 NSGenericException;                                //通用异常
 NSRangeException;                                  //  试图访问超出数据范围时发生的异常                 
 NSInvalidArgumentException;                 // 将无效参数传递给方法时发生的异常的名称,例如需要非nil对象的nil指针
 NSInternalInconsistencyException;        //当内部断言失败时发生的异常的名称,并在被调用的代码中暗示一个意外的条件。

NSMallocException;                                  //这是内存不足的问题,无法分配足够的内存空间,比如需要分配的内存大小是一个不正常的值,比较巨大或者设备的内存空间不足以及耗尽.

NSObjectInaccessibleException;            //从不应该访问远程对象的线程访问远程对象时发生的异常的名称。
NSObjectNotAvailableException;           //当NSConnection的远端拒绝向对象发送消息时,出现异常的名称,因为对象从来没有被提供过。
NSDestinationInvalidException;              //当内部断言失败时发生的异常的名称,并在分布式对象中暗示一个意外的条件。
   
NSPortTimeoutException;                       //当端口上的超时设置在发送或接收操作期间到期时发生的异常的名称。
NSInvalidSendPortException;
NSInvalidReceivePortException;             //当NSConnection的发送端口无效时发生的异常的名称。
NSPortSendException;                             //发送时发生一般性错误。
NSPortReceiveException;                        //在接收时发生一般错误。

NSOldStyleException;                             //不再使用


我研究这个当然不仅仅为了知道这些字符是什么意思。遥想当年第一次在项目里集成腾讯的bugly的时候,满脑子都是:“天呐,你们为什么这么优秀~”,不过有些看似牛逼的东西实在经不起什么研究。

最近花了点时间自己攒了个小工具,可以记录并展示crach信息,主要针对一些难以重现的bug.项目在这里


你可能感兴趣的:(NSException那点事儿)