• 定制NSError


    定制NSError

    效果:

    系统的NSError是可以自己定制的,以下提供代码来实现并表示如何使用:

    YXError.h 与 YXError.m

    //
    //  YXError.h
    //  CustomYXError
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    // 自行添加错误码
    typedef enum : NSUInteger {
        Crash        = -10000,
        DisConnect,
        Unknow,
    } YXErrorCode;
    
    @interface YXError : NSObject
    
    + (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic;
    + (NSString *)transformCodeToStringInfo:(YXErrorCode)code;
    
    @end
    //
    //  YXError.m
    //  CustomYXError
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "YXError.h"
    
    static NSDictionary *errorDictionary = nil;
    
    @implementation YXError
    
    + (void)initialize
    {
        if (self == [YXError class])
        {
            errorDictionary = 
            @{
              /* code        :        errorWithDomain */
              /* ==================================== */
              
              @(Crash)       :        @"Crash",
              @(DisConnect)  :        @"DisConnect",
              @(Unknow)      :        @"Unknow",
              
              /* ==================================== */
              };
        }
    }
    
    + (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic
    {
        return [NSError errorWithDomain:errorDictionary[@(code)]
                                   code:code
                               userInfo:dic];
    }
    
    + (NSString *)transformCodeToStringInfo:(YXErrorCode)code
    {
        return errorDictionary[@(code)];
    }
    
    @end

    以下是使用的代码:

    //
    //  AppDelegate.m
    //  NSError
    //
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "YXError.h"
    
    @implementation AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // 定制一个NSError
        NSError *error = [YXError errorCode:Crash
                                   userInfo:nil];
        NSLog(@"%@", error);
        
        // 翻译一个NSError(将code值翻译成字符串)
        NSLog(@"%@", [YXError transformCodeToStringInfo:-10000]);
        
        return YES;
    }
    
    @end

    以下是自行添加错误代码的地方:

    以下是设计的细节(其中,将字典,枚举值,字符串3者之间建立联系的做法还是很有意思的):

  • 相关阅读:
    存在主义危机
    噪声干扰
    Jupiter 2 Modem State Codes
    广域网优化协议欺骗
    RF / IF 信号
    意识清晰九度
    m3u8downloader
    JS禁用浏览器退格键
    Ruby on rails开发从头来(五十一) ActiveRecord基础(并发处理)
    来自Rails世界的项目管理工具Redmine
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3969986.html
Copyright © 2020-2023  润新知