除了空指针,越界什么的异常都可以catch的=。= 不过官方不鼓励try catch,不过=。= 管他呢。。。
crashlytics ,你可以试试。 数组越界其实你可以用一个category 重写数组的objectAtIndex 。如果越界返回nil 。总比崩溃对用户友好一些。我是这样做的。。
2楼 @tangyumeng 好建议 为嘛我的crashlytics一直在排队呢。。。。。
做好边界测试
3楼 @yangjie6020 我是之前测试用过,实际项目中没有用到。。。好像显得我对公司项目不上心的样子 😢
3楼 @yangjie6020 crashlytics 是要排队的?
1楼 @Lithium 用catch的话,程序会在不正常状态,接下来会出现什么问题都是不可预知的,还不如让APP直接crash。 要完全避免crash基本上很难,只能尽最大能力预防或提早发现,我们现在的做法是: 1 使用crashlytics,跟踪线上用户crash时的详细信息。crashlytics的信息比友盟的详细很多,很多时候可以详细到代码行。并且可以添加自己的日志,这些日志会在crash报告中包含。 2 代码中使用NSAssert之类的防御性编程,让Debug版的APP在数据不符合预期时,抛出异常。 3 每次发布前都用xcode的静态分析工具,分析源代码。 4 尽可能的消灭编译警告。 5 在模拟器时测试时,要时不时运用一下模拟器的内存警告功能,这样会经常会碰到一些不是你预期的问题。 6 测试机最好是低端一点的机器,容易出问题。
这个要分析原因吧。 导致闪退的原因:1. 程序逻辑 2. 边界条件 3. 内存用量。 前面两个原因目前都是通过单元测试来保证。 内存这块需要测试时留心。 (如果lz熟悉instrument 会有帮助)