Objective-C中的异常

来源:互联网 发布:尤克里里入门软件 编辑:程序博客网 时间:2024/05/01 18:25

常见异常捕获方法

方法说明-(BOOL)isKindOfClass:(Class)aClass判断一个对象是不是指定类或者指定类的子类的实例-(BOOL)isMemberOfClass:(Class)aClass判断一个对象是不是指定类的实例+(BOOL)isSubclassOfClass:(Class)aClass判断某个类是不是指定类的子类+(BOOL)instancesResponfToSelector:(SEL)aSelector判断某个对象是否响应指定方法(向类发送消息)-(BOOL)responfToSelector:(SEL)aSelector判断某个对象是否响应指定方法(向实例发送消息)-(id)performSelector:(SEL)aSelector调用某个方法,在运行阶段才可以发现错误(与直接调用的区别)

异常捕获的一边格式:

  1. @try {  
  2.       <#statements#>  
  3.   }  
  4.   @catch (NSException *exception) {    // @catch捕获@try()代码块中抛出的异常
  5.       <#handler#>  
  6.   }  
  7.   @finally {  
  8.       <#statements#>      //无论是否存在异常,最好在此做些必要的处理
  9.   }  

例:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    @autoreleasepool {        NSException* pE=[[NSException alloc]init];        //自定义异常         pE=[NSException exceptionWithName:@"出错了" reason:@"被除数不能为0" userInfo:nil];        int nNum1=81;//初始化除数        int nNum2=0;//初始化被除数        int nResult=0;        @try {            //如果nNum2=0(即被除数为0)抛出异常            if (nNum2==0) {                @throw pE;            }            else            {                //如果被除数不为0,则执行以下语句                nResult=nNum1/nNum2;                NSLog(@"nResult=%i",nResult);            }        }        @catch (NSException *exception) {//抛出异常            NSLog(@"%@  %@",[exception name],[exception reason]);        }        @finally {            NSLog(@"捕获结束");        }    }    return 0;}

结果:


出错了   被除数不能为0

捕获结束


原创粉丝点击