NSError的使用

NSError是系统错误信息的重要类。

NSError中有三个重要的私有变量code,domain和userInfo。

code:是一个整数,最好是一个枚举,和特定的错误域是对应的。

domain:是一个字符串,标记错误域。

userInfo:是一个字典,包括任意的健值对。其中有一些预定义的健:

NSLocalizedDescriptionKey:本地化的错误描述

NSLocalizedRecoverySuggestionErrorKey:本地化的恢复建议

NSLocalizedFailureReasonErrorKey:本地化的失败原因

NSError 主要有两个用法,一个是获取错误信息,另一个是编辑错误信息。

    //获取错误
    NSError *error = nil;
    BOOL success = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"path" error:&error];
    if (!success) {
        NSLog(@"%@", [error localizedDescription]);
    }

//预定义信息
#define JohnnyErrorDomain @"com.JohnnyError.Domain"

typedef NS_ENUM(NSInteger, ErrorFail){
    ErrorOne = 1,
    ErrorTwo,
    ErrorThree
};
    //产生错误信息
    NSDictionary *userInfo = @{
                               NSLocalizedDescriptionKey: NSLocalizedString(@"Operation fail", nil),
                               NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The operation timed out.", nil),
                               NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil)
                               };
    NSError *error = [NSError errorWithDomain:JohnnyErrorDomain
                                         code:2
                                     userInfo:userInfo];
    //提示
    [[[UIAlertView alloc] initWithTitle:error.localizedDescription
                                message:error.localizedRecoverySuggestion
                               delegate:nil
                      cancelButtonTitle:NSLocalizedString(@"OK", nil)
                      otherButtonTitles:nil, nil] show];

你可能感兴趣的:(错误和异常处理,Foundation)