【读书笔记】iOS6编程实战 10错误处理
来源:互联网 发布:js shift 编辑:程序博客网 时间:2024/05/18 03:57
在OC中卫内存分配错误编写错误处理代码几乎是没有意义的。
另一个类似的是采用断言,它在遇到错误时候会抛出一个NSInternalInconsistencyException异常,该异常默认会导致程序崩溃。忽略数组超出有效值的缩影是一种糟糕事情,让程序崩溃时一个更好的选择。
程序崩溃不是最坏的事情,脏数据才是最坏的结果。
1,断言
使用断言可以有效地防止程序错误。断言要求程序中特定的语句必须为真。如果不为真,说明程序正处于一种无法预测的运行状态,这时候就不该继续了。在Mac中,出现异常只结束当前循环。而iOS中,在哪个线程发生异常,默认行为都是调用abort结束整个程序。
可以在编译设置面板的“Preprocessor Macros”中设置NS_BLOCK_ASSERTIONS以禁用NSAssert。建议发布版本禁用断言。(书152页有个关于断言开关的宏定义)
2,异常
Coco框架通常不是异常安全的。异常只用来处理程序员发的错误,程序捕获到这种异常之后应该尽快退出运行。
异常是用来处理那些永远不应该发生却发生错误的。OC对@throw和@catch这些异常指令支持,但是不建议使用。
在OC中,ARC默认情况下不是异常安全的,有可能因为异常而产生严重的内存泄露。理论上说,OC++中ARC是异常安全的,但是@autoreleasepool块仍然可能导致后台线程发生内存泄漏。使用异常安全的ARC会导致性能下降,这也是应该避免大量使用OC++的原因之一。
3,错误和NSError
在iOS中分配小块内存失败应该视为程序错误。用户错误和环境错误不应该抛出异常,应该返回错误信息。通常是用NSError返回错误信息。例如NSFileManager。
错误对象主要包含错误域和错误代码,后者是一个整型值,前者是一个详细说明错误含义的字符串。
- 【读书笔记】iOS6编程实战 10错误处理
- 【读书笔记】iOS6编程实战 17章国际化和本地化
- 【读书笔记】iOS6编程实战 8绘图功能1
- 《Windows核心编程》读书笔记一 错误处理
- C++编程规范之错误处理与异常(读书笔记)
- java编程思想读书笔记----第十二章 通过异常处理错误
- 《Java并发编程实战》读书笔记
- 《Java并发编程实战》读书笔记
- java并发编程实战-读书笔记
- 《Java并发编程实战》读书笔记
- 《java并发编程实战》读书笔记
- 《Java并发编程实战》读书笔记
- 读书笔记-《Java并发编程实战》
- java并发编程实战读书笔记
- java并发编程实战读书笔记
- Java并发编程实战读书笔记
- PHP脚本的错误处理方式(PHP实战手册读书笔记)
- 【Java并发】JAVA并发编程实战-读书笔记10
- 实时操作系统中实现自己的udelay延时函数
- 放完假,下一步该走了
- 关于标定的资料
- qt
- mysql 5.1文档
- 【读书笔记】iOS6编程实战 10错误处理
- C15_OC05-@property和@synthesize
- vim 文本块和多文件操作
- python学习笔记——第七章 更加抽象(对象)
- C图形界面
- 再发一个HTML5+WebSocket+PHP多进程 多人在线小蝌蚪游戏[强烈推荐]
- 第七周作业
- struts2----一个通用的文件下载代码示例
- C程序设计例解