Tag: NSError
NSErrorクラスのメソッドを使って簡易に作ることができる
+ (id)errorWithDomain:(NSString *)domain code:(int)code userInfo:(NSDictionary *)dict
NSCocoaErrorDomain | Cocoa環境に関するエラー |
NSPOSIXErrorDomain | UNIX環境に関するエラー |
NSURLErrorDomain | URL読み込みに関するエラー |
などなど。自分のプログラム専用にドメインを定義することもできる。その場合はエラーコードも自分できめないといけない。
ドメインごとに決まった値を設定する。例えば、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; } }