Tag: NSError

目次

参考情報

自分でエラーオブジェクトを作る

NSErrorクラスのメソッドを使って簡易に作ることができる

+ (id)errorWithDomain:(NSString *)domain code:(int)code userInfo:(NSDictionary *)dict

ドメイン名

NSCocoaErrorDomainCocoa環境に関するエラー
NSPOSIXErrorDomainUNIX環境に関するエラー
NSURLErrorDomainURL読み込みに関するエラー

などなど。自分のプログラム専用にドメインを定義することもできる。その場合はエラーコードも自分できめないといけない。

エラーコード

ドメインごとに決まった値を設定する。例えば、NSPOSIXErrorDomainの場合、UNIXのシステムコールでセットされるerrornoをセットする。

ユーザー辞書

キーと値のペアでエラーに関する情報を好きなだけセットする。キーはあらかじめ定義されたものがある。

NSLocalizedDescriptionKeyエラー内容を説明する文字列
NSLocalizedFailureReasonErrorKeyエラーの原因を説明する短い文字列
NSLocalizedRecoverySuggestionErrorKeyエラーに対する対処方法を示す文字列。

などなど。

サンプル

自前エラーコードとエラーメッセージだけの簡単なNSErrorを生成したい場合次のようなユーティリティメソッドを定義して使うと簡単。

#define MyErrorDomain @"MyErrorDomain"
typedef enum
{
    MyErrorCodeUnknown = 0,
    MyErrorCodeParseError
} MyErrorCode;

+ (void)initError:(NSError**)error code:(MyErrorCode)code message:(NSString*)message
{
    //エラー生成用のユーティリティメソッド
    NSDictionary *userInfo = nil;
    if (message != nil) {
        userInfo = [NSDictionary dictionaryWithObject:message forKey:NSLocalizedDescriptionKey];
    }
    *error = [NSError errorWithDomain:MyErrorDomain code:code userInfo:userInfo];
}

+(void)parseWithError:(NSError**)error 
{
    if (エラー発生) {
        [self initError:error code:MyErrorCode message@"parse error"];
        return;
    }
}


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-04-11 (月) 15:28:00