OC使用@try处理异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HUXU981598436/article/details/42613429

Object-C技术学习,更多资源请访问 https://www.itkc8.com

//  main.m

//  OC使用@try处理异常

//

//  Created by Goddog on 15/1/11.

//  Copyright (c) 2015年 Goddog. All rights reserved.

//

/*

 1.OC的异常机制并不是作为常规的编程实践,通常是作为一种程序调试、捕捉机制。

 2.通常情况下,如果@try块被执行一次,则@try块后只有一个@catch块被执行,绝不可能有多个@catch块被执行,除非使用goto。

 3.@try块里声明的变量是代码块内的局部变量,它只是在@try块内有效,@catch块中不能访问该变量。

 4.语法:@try { //业务代码实现 ...} @catch (异常1 ex){ //异常代码处理... } @catch (异常2 ex){ //异常代码处

        理... }  ... @finally{}

 5.异常几个常见方法:(1)name: 返回异常详细的名称;

                  (2)reason: 返回引发该异常的原因;

                  (3)userInfo: 返回引发该异常的用户附加信息返回一个NSDictionary对象

 6.使用@finally回收资源,在没有使用ARC机制的情况下,所有对象占有的内存必须显示回收。

 7.不要在@finally块中使用return和@throw等导致方法终止的语句。

 */

 

//
//  Person.h
//  OC使用@try处理异常
//
//  Created by Goddog on 15/1/11.
//  Copyright (c) 2015年 Goddog. All rights reserved.
//

#import <Foundation/Foundation.h>

//定义协议
@protocol Person <NSObject>
@optional
-(void) eat;
@end

 

//
//  SuperMan.h
//  OC使用@try处理异常
//
//  Created by Goddog on 15/1/11.
//  Copyright (c) 2015年 Goddog. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

//定义接口实现协议
@interface SuperMan : NSObject<Person>

@end

 

//
//  SuperMan.m
//  OC使用@try处理异常
//
//  Created by Goddog on 15/1/11.
//  Copyright (c) 2015年 Goddog. All rights reserved.
//

#import "SuperMan.h"

//实现部分
@implementation SuperMan

@end

 

#import <Foundation/Foundation.h>
#import "SuperMan.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //实例
        //SuperMan* superMan = [[SuperMan alloc] init];
        //没有实现eat方法,所有警告
        //[superMan eat];
        
        //进行异常处理
        @try {
            SuperMan* superMan = [[SuperMan alloc] init];
            [superMan eat];
        }
        @catch (NSException *exception) {
            NSLog(@"捕捉异常:%@,%@",exception.name,exception.reason);
        }
        @finally {
            NSLog(@"资源回收完毕!");
        }
    
    }
    NSLog(@"程序执行完毕!");
    return 0;
}

 

Object-C技术学习,更多资源请访问 https://www.itkc8.com

 

 

 

展开阅读全文

没有更多推荐了,返回首页