&tag(NSError);
*目次 [#w0ca99c5]
#contents
*参考情報 [#sa922e82]

-[[Objective-C]]
*自分でエラーオブジェクトを作る [#mf74c0d2]
NSErrorクラスのメソッドを使って簡易に作ることができる
 + (id)errorWithDomain:(NSString *)domain code:(int)code userInfo:(NSDictionary *)dict

**ドメイン名 [#i871ff22]
,NSCocoaErrorDomain,Cocoa環境に関するエラー
,NSPOSIXErrorDomain,UNIX環境に関するエラー
,NSURLErrorDomain,URL読み込みに関するエラー

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

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

**ユーザー辞書 [#i699f39f]
キーと値のペアでエラーに関する情報を好きなだけセットする。キーはあらかじめ定義されたものがある。
,NSLocalizedDescriptionKey,エラー内容を説明する文字列
,NSLocalizedFailureReasonErrorKey,エラーの原因を説明する短い文字列
,NSLocalizedRecoverySuggestionErrorKey,エラーに対する対処方法を示す文字列。

などなど。


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

#pre{{

#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