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;
}
}