What is " Exceptions"(异常)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
无论一个程序设计的多么出色,它总要通过某种方式与用户或者外面的世界去交互,这样,程序必定会时不时地碰到诸如意料之外的情况。举个简单的例子,当程序要求用户输入一个文件名的时候,用户输入了一个根本不存在的文件名,或者干脆就什么都没有输入。又或者文件名是正确的,但这个文件由于磁盘读写错误,它的内容全部乱掉了。总之,有太多种可能的错误了。另外,程序员也必然会写一些错误的代码,这一点也需要去考虑。方法调用时有可能传入了错误的参数,或者代码执行了意外的路径,或者傻傻地使用了错误的变量。当这些问题发生的时候 (当然,这些问题一定会发生的),相对于让程序直接崩溃,更好的方法是优雅地发现并抓住它,让程序继续运行下去而不是直接报错。
为了可以做到这点,大部分编程语言提供了两种方法。第一种方法称为异常处理(Exception Handling),或者称为错误捕捉(error trapping)。第二种方法是断言检查(assertion checking)。异常(Exceptions)允许程序当一个错误发生的时候抓住这个错误并做出相应的操作。断言(Assertions)允许程序员在执行某个特定的操作之前设定一些条件。Objective-C也提供了上述两种方法,我们在下面将详细介绍。
最后注意一下,使用本章所提到的功能,需要#import Foundation/NSException.h
文件到你的代码中。
Objective-C针对异常处理提供了两件事:
- 在程序执行时,侦测到了一个错误条件,控制是通过一个特殊的错误处理程序得到发生错误的具体信息的。
- 如果异常处理程序本身的代码出错了,它会将错误信息上传到比它高一级的代码中。通常更高一级的代码非常清楚错误发生的原因,因此能更好地处理这个错误。
在线练习
{$ activeFileHint $}