您的位置:首页 > 其它

三十四、多态性、动态类型 和 动态绑定(七)用 @try命令 处理 意外情况

2012-10-28 02:12 239 查看
好的编程习惯 要求 你 能够 事先 估计 程序可能发生的错误。你 可以检查 可能导致程序非正常终止的条件,并且 把 这些情况 处理好;你 也可以 记录下 错误信息,优雅地 终止 程序 或者 采取 正确的措施。在先前的博文中,我们 已经看到 如何检查 一项措施 是否适用于 一个物件。在避免 错误的情况下,这样的检查
可以防止 对 物件 采取 不适当的措施。当你 试图 对 一个物件 采取 不适当的措施时,你的程序 就会陷入 意外情况。在下面这个程序当中,我 对 Fraction类型的物件myFraction 采取了 noSuchMethod这项措施,而 noSuchMethod这项措施 是 不适用于 Fraction类型的物件的:



当你 编译 这段程序时,编译器 会向 你 发出 错误警告。虽然 这样,你 还是可以 运行 这个程序。当你 运行 这个程序时,你 会看见 你的程序 非正常地 终止,并且 看到 类似于下面这样的错误信息:



为了 避免 程序 像 这样 非正常地 终止,我们 可以使用 这样的格式:



@try中的代码 会 正常 执行。如果 @try中的代码 遭遇到 意外情况,程序 不会终止,而是 继续执行 @catch中的语句。无论 @try中的语句 是否 遭遇到 意外情况,@finally当中的语句 都会 正常 执行。下面的程序 解释了 如何使用 @try命令:



运行 这个程序,可以得到 这样的结果:



当意外情况 发生的时候,@catch这段代码 就会执行,用来捕捉 意外情况。我 用 NSExcepiton类型的物件exception物件 来代表 @try这段代码所遇到的意外情况,并且 对 exception这个物件 采取了 name 和 reason这两项措施,从而 将 意外情况的名称 和 原因 读取出来。而 @finally当中的语句 则 可以验证 程序 是否终止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: