Objective-C 编程语言(11)异常处理----捕获多种类型的异常、抛出异常

转载请标明出处: http://blog.csdn.net/zhangxingping

捕获多种类型的异常

在@try()代码块后面紧跟一个或者是多个@catch即可捕获@try()代码块中抛出的异常。其中在有多个@catch()代码块的时候,应该按照异常的明确程度从高到底的顺序进行排列。因此我们可以对异常进行分组处理,如列表11-1所示:

@try
{
    ….
}
@catch(CustomException  * ce) // 1
{
    ….
}
@catch(NSException * ne)  // 2
{
    ….
}
@catch (id ue)
{
    ….
}
@finally // 3
{
   //无论是否有异常,都需要在此进行那些必要的处理
}

下面的列表描述了上面代码中标号的3行代码:

1.      捕获类型明确的异常。

2.      捕获那些类型相对不够明确,也就是比较通用类型的异常。

3.      进行必要的清扫工作,不管是否捕获到了异常。

 

抛出异常

抛出异常的时候,首先使用适当的信息初始化一个实例,比如使用名称和产生的原因来初始化异常实例。

NSException *exception = [ NSExceptionexceptionWithName”@HotTeaException” reason:@”The tea is too hot” userInfo:nil];

 

重要:在很多情况下,使用异常是很常见的。例如,可以使用异常来同志某段程序不能正常执行——比如需要的文件缺失或是数据不能正确解析等。Objective-C中的异常处理是很耗资源的。因此不能使用异常处理来进行流程控制,或者用异常来代表有错误产生。相反,应该使用方法或者是函数的返回值来判断是否有错误发生,并在表示错误的对象中加入相关的信息。更多信息,请参阅《Cocoa中错误处理编程指南》。

 

在@catch()代码块中也是可以使用@throw命令字而不需要参数来再次把捕获到的异常进行抛出的。

 

Objective-C中没有限定必须抛出NSException类的对象,可以抛出任何Objective-C对象作为异常对象。NSException类提供了有助于进行异常处理的方法,但是如果我们很想使用自己定义的异常也是可以的。我们还可以通过继承NSException类来实现类型更加明确的异常,譬如文件系统异常或者是通信异常等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值