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

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

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

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

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

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

当意外情况  发生的时候,@catch这段代码  就会执行,用来捕捉  意外情况。我  用  NSExcepiton类型的物件exception物件  来代表  @try这段代码所遇到的意外情况,并且  对  exception这个物件  采取了  name  和  reason这两项措施,从而  将  意外情况的名称  和  原因  读取出来。而  @finally当中的语句  则  可以验证  程序  是否终止。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值