代码出现crash,报错:libc++abi.dylib: terminate_handler unexpectedly threw an exception

当我们很明确是某一块代码执行导致了错误,不妨使用try catch来打印exception详情。

例如:

@try {
        self.headerlineLable.text = [_entity.name substringToIndex:]?:@"Power by Wieye";
        self.headerlineLable.font = Font_Heiti(kCF_TAB);
    }
    @catch (NSException *exception) {
        NSLog(@"exception:%@",exception);
    }

打印结果:

exception:*** -[__NSCFString substringToIndex:]: Index  

我们知道了问题,问题是因为我想保留字符串前16个索引,但现在传递过来的字符串是13个索引。索引越界了。然后崩溃了~

今天是1月26日,出现了这样的错误,我需要重新编辑一下处理方法:

libc++abi.dylib: terminate_handler unexpectedly threw an exception

分析摘自:http://www.itnose.net/detail/6196671.html

   现在唯一的信息点是libc++abi.dylib,这个库到底是做什么的?从后缀看,是一个动态库,那么会不会是因为发生了一些动态错误? 而按经验来看,一般的动态错误基本是因为动态类型错误引起,在object-c语言中,会发生动态类型错误的可能基本存在于不可变类型与可变类型之间的转换,那么我们的查错范围将优先限制在不可变类型与可变类型转换上,是否我们对一个不可变类型进行了修改操作?当然,编译器没有那么傻,如果直接对一个不可变类型进行修改操作,是会直接报错的,那么就剩下另一种可能,程序将一个不可变类型赋值给可变类型,然后对可变类型进行了修改操作,这样可以通过静态检查,但是动态运行的时候,就会发生类型错误。基于以上分析,我们可以跟踪断点,会发现程序在对mutable对象进行add、set等操作时挂掉,而这个对象实际上赋值的是一个不可变对象。常见的情况是把一个NSArray对象赋值给一个NSMutableArray对象,然后进行了delete、add等修改操作,或者把一个NSDictionary对象赋值给一个NSMutableDictionary对象,然后进行了set等操作。

提示:如果出现这样的问题,大都是数组越界之类的。

iOS - libc++abi.dylib: terminate_handler unexpectedly threw an exception的更多相关文章

  1. libc++abi.dylib: terminate_handler unexpectedly threw an exception错误小结

    说法一: 我们在运行xcode工程时,有时候会遇到”libc++abi.dylib: terminate_handler unexpectedly threw an exception”错误,app莫 ...

  2. 【iOS】libc++abi.dylib: terminate_handler unexpectedly threw an exception

    用 ShareSDK 做第三方分享的时候遇到了这个问题…… 联系了客服,后来在他的指导下,发现是数组的问题,该问题不知道是否具有通用性,暂且记下.

  3. libc abi.dylib: terminate_handler unexpectedly threw an exception

    错误代码:很明显的错误,一定要谨记. - (NSInteger)giftCountFullScreen{ NSArray *arr = [NSMutableArray arrayWithArray:s ...

  4. 如何调试libc++abi.dylib handler threw exception错误

    From:http://blog.csdn.net/naruto_ku/article/details/8779203 在进行iOS开发时,偶尔会碰到libc++abi.dylib handler t ...

  5. libc++abi.dylib handler threw exception

    在iOS开发时,有时候遇到libc++abi.dylib handler threw exception这样的异常,  虽然在断点出加上了All Exceptions,也断到相应的代码了,但是没打印对 ...

  6. IOS Exception 1(libc++abi.dylib: terminating with uncaught exception of type NSException)

    2014-08-05 22:18:46.455 SwiftUI[1329:40871] -[_TtC7SwiftUI14MViewControler clickMe]: unrecognized se ...

  7. mac python3 conda pytorch出错:libc++abi.dylib: terminating with uncaught exception of type NSException

    mac 10.14/ conda/python 3.7环境下运行神经网络例子出现错误: -- :::] -[NSApplication _setup:]: unrecognized selector ...

  8. 综合出现NSScanner: nil string argument libc++abi.dylib: terminat错误的解决方案

    在开发中出现了这个错误,断点查找很久,没找到问题所在的代码,google下,发现了下面这几点会产生这个错误: 首先,顾名思义,错误原因是我们在调用某个方法的时候,传入了一个空字符串(注意区别于字符串内 ...

  9. libc++abi.dylib`__cxa_throw: 使用[AVAudioPlayer play]会产生__cxa_throw异常

    libc++abi.dylib`__cxa_throw: 使用[AVAudioPlayer play]会产生__cxa_throw异常 开发中遇到一个奇怪的异常.我调用AVAudioPlayer pl ...

随机推荐

  1. Linux sysinfo获取系统相关信息

    Linux中,可以用sysinfo来获取系统相关信息. #include <stdio.h> #include <stdlib.h> #include <errno.h& ...

  2. 基于nodejs的终端天气查询

    国际惯例,先上效果图 前天,突然想到,怎么直接在命令行查询天气呢?好的,那就写一个吧.然后就开始找城市.天气的api接口,最终做出来这么一个东西. 安装方法:$ npm install tianqi ...

  3. JavaScript学习笔记- 正则表达式常用验证

    <div> <h1>一.判断中国邮政编码匹配</h1> <p>分析:中国邮政编码都是6位,且为纯数字</p> <div>邮政编码 ...

  4. 网络流 最大流HDU 3549

    //////////在这幅图中我们首先要增广1->2->4->6,这时可以获得一个容量为2的流,但是如果不建立4->2反向弧的话,则无法进一步增广,最终答案为2,显然是不对的, ...

  5. ASP.NET MVC 扩展HtmlHelper类方法

    1.扩展HtmlHelper类方法ShowPageNavigate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  6. 【转】解决eclipse无法设置NDK问题

    参考:http://jingyan.baidu.com/album/4d58d5413000a09dd4e9c0fe.html?picindex=1  到android sdk官网下载r23版本的ad ...

  7. bzoj2653: middle

    首先,对于每个询问,我们二分答案 然后对于序列中大于等于中位数的数,我们把它们置为1,小于中位数的数,置为-1 那么如果一个区间和大于等于0,那么就资磁,否则就不滋磁 这个区间和呢,我们可以用主席树维 ...

  8. OPENGL之定时器

    定时器一般用于控制隔一段时间调用某函数 函数原型glutTimerFunc(unsigned int msecs,void(*func)(int value),int value) 说明:msecs为 ...

  9. NGUI之输入文本框的使用

    ToolBar中的两个红圈 另,代码如下:只需要定义一个变量即可,然后将控件drag到那里,真的是灰常方便呀 还有一个就是保存了(OK的响应),可以简单地理解为存档或读档

  10. 你所不知道的Android Studio调试技巧

    转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug ...