8.3.1 错误的分类
错误有很多种,但一般可以分为两类。
一类是有错误的返回,但是并不影响程序继续运行。比如通过应用打开一个文件,但这个文件可能已经被删除,或者其中的一些信息被损坏了导致无法打开;又比如在互联网上访问一些数据,却可能因为网络、访问的服务器或者数据本身的问题,最终无法访问到数据。针对这类错误,我们需要通过一些错误处理的手段让程序平稳运行。
另一类是应用运行时,给函数传入非法参数或不正确的函数调用步骤,又或者代码执行在错误的线程上等等,这就会导致崩溃。比如访问数组中下标超出数组内元素个数的元素,又比如同时在两个线程上操作一个可变容器,并且没有采取任何的保护措施,这些不规范的操作也会引起程序的崩溃。iOS系统在这种情况下主动选择崩溃是出于安全考虑——既然已经发现可能存在崩溃风险,不如先停止程序,这样更安全一些。