NSError 自定义
NSError 自定义
obj-c
定制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者之间建立联系的做法还是很有意思的):

