Objective-C:错误处理

//
//  ViewController.m
//  第14章 专家级技巧:错误处理
//
//  Created by meipaipai on 17/2/3.
//  Copyright © 2017年 meipaipai. All rights reserved.
//

#import "ViewController.h"


@interface ViewController ()<NSURLConnectionDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //14-1.运行时错误情况
    //-- 程序运行时出现的错误情况
    //-- 逻辑错误,语义错误,用户输入错误
    
    /*
     * 1.断言:判断条件是否成立,检查编程逻辑和语义错误
     * 2.错误编码:标示制定运行时错误
     * 3.错误对象:用于封装和传输用户需要了解的运行时错误信息
     * 4.异常:程序运行过程中出现的反常
     */
    
    //14-2 NSError类
    //-- 创建错误对象, 属性是错误编码,错误域和用户信息目录。
//    NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileNoSuchFileError userInfo:nil];
    
    //如果在指定目录没有找到文件,这个错误对象就会被创建
    NSString *desc = NSLocalizedString(@"FileNotFound", @"");
    NSDictionary *info = @{NSLocalizedDescriptionKey:desc};
    NSError *err = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileNoSuchFileError userInfo:info];
    NSLog(@"%@", err);
    
    
    /*errorWithDomain:错误域
     
    FOUNDATION_EXPORT NSErrorDomain const NSCocoaErrorDomain;//Cocoa Frameworks的错误编码
    FOUNDATION_EXPORT NSErrorDomain const NSPOSIXErrorDomain;//源自遵守POSIX标准的Unix版本的错误编码
    FOUNDATION_EXPORT NSErrorDomain const NSOSStatusErrorDomain;//Apple OS X Core Services 和 Carbon framework的错误编码
    FOUNDATION_EXPORT NSErrorDomain const NSMachErrorDomain;//OS内核错误编码
    */
    
    //1.使用错误对象
    //-- 委托:将错误对象作为参数传送给委托方法
    //-- 间接:从程序调用的方法间接获取错误对象
    
//    NSError *writeerr;
//    NSData *greeting = [@"Hello, world" dataUsingEncoding:NSUTF8StringEncoding];
//    BOOL success = [FileWriter write......]

    
    
    //14-3 异常处理,运行过程中处理异常的机制
    @try {
//        Code that can potentially throw an exception
        //可能抛出异常的代码
    } @catch (NSException *exception) {
//        Handle an exception thrown in the @try block
        //处理异常的代码
        @throw exception;
        //    @throw expression  抛出异常
    } @finally {
//        Code that gets executed whether or not an exception is thrown
        //释放资源的代码
    }
    
    //14-4 NSException 类
    //-- 管理异常
    
    //exceptionWithName  异常名称
    //reason   异常原因
    //userInfo   自定义信息目录
//    NSException *exception = [NSException exceptionWithName:NSGenericException reason:@"111" userInfo:nil];
    
//    @try {
//        [NSException raise:NSGenericException format:@"%@", @"22222"];
//    } @catch (NSException *exception) {
//        NSLog(@"%@--\n%@", [exception name], [exception description]);
//    }

    NSArray *array = @[@"1", @"2", @"3", @"4"];
    @try {
        int a = 4;
        NSLog(@"%@", array[a]);
    } @catch (NSException *exception) {
        NSLog(@"%@--\n%@", [exception name], [exception description]);
    }
    
    /*
     FOUNDATION_EXPORT NSExceptionName const NSGenericException;
     FOUNDATION_EXPORT NSExceptionName const NSRangeException;
     FOUNDATION_EXPORT NSExceptionName const NSInvalidArgumentException;
     FOUNDATION_EXPORT NSExceptionName const NSInternalInconsistencyException;
     
     FOUNDATION_EXPORT NSExceptionName const NSMallocException;
     
     FOUNDATION_EXPORT NSExceptionName const NSObjectInaccessibleException;
     FOUNDATION_EXPORT NSExceptionName const NSObjectNotAvailableException;
     FOUNDATION_EXPORT NSExceptionName const NSDestinationInvalidException;
     
     FOUNDATION_EXPORT NSExceptionName const NSPortTimeoutException;
     FOUNDATION_EXPORT NSExceptionName const NSInvalidSendPortException;
     FOUNDATION_EXPORT NSExceptionName const NSInvalidReceivePortException;
     FOUNDATION_EXPORT NSExceptionName const NSPortSendException;
     FOUNDATION_EXPORT NSExceptionName const NSPortReceiveException;
     
     FOUNDATION_EXPORT NSExceptionName const NSOldStyleException;
     
     */
    
    //比较
    //错误对象:可以封装错误信息,为恢复操作提供基础信息,cocoa框架支持。  难维护,难理解,可读性差,与程序逻辑放在一起。
    
    //异常:检测异常和处理异常操作分开,提高了程勋可维护性。检测异常到处理异常的自动化。   浪费资源,降低程序性能,cocoa框架,不是异常安全式框架。
    
    
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值