macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

NSErrorクラス

INDEX>Foundation>

apple(mac)
apple(iOS)

解説

エラーが発生した時にエラーの内容を返すためのクラスです。

継承 NSObject
準拠 NSCoding
NSCopying
NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 Mac OS X v10.2.7(10.2+safari)以降
iOS 2.0以降
定義 NSError.h
NSURLError.h

概要

NSErrorオブジェクトは他のオブジェクトにエラー情報を送信するために、エラーコード・ドメイン・ローカライズされたエラー情報・オプションの辞書などを含んでカプセル化されています。

NSErrorはCoreFoundationのCFErrorRefとトールフリーブリッジです。

NSErrorは抽象クラスではなく、直接使用することができます。サブクラスを作成してローカライズ文字列を提供することも可能です。

エラードメインは主に4種類あります。
NSMachErrorDomain
NSPOSIXErrorDomain
NSOSStatusErrorDomain
NSCocoaErrorDomain

他にもフレームワークで提供しているエラードメインがあります。

エラーオブジェクトの作成

ドメインとエラーコード、追加情報でエラーを作成するには(+ errorWithDomain:code:userInfo)メソッドを使用します。

allocで作成した後、ドメインとエラーコード、追加情報でエラーを初期化するには(– initWithDomain:code:userInfo)メソッドを使用します。

エラープロパティの取得

エラーコードを取得するには(– code)メソッドを使用します。ドメインを取得するには(– domain)メソッドを使用します。追加情報を取得するには(– userInfo)メソッドを使用します。追加情報はNSDictionaryで返されます。

ローカライズされたエラーの詳細の取得

ローカライズされたエラーの詳細を返すには(– localizedDescription)メソッドを使用します。ローカライズされたリカバリーオプションを返すには(– localizedRecoveryOptions)メソッドを使用します。エラーダイアログで
ローカライズされたリカバリー手順を返すには(– localizedRecoverySuggestion)メソッドを使用します。ローカライズされたエラーの理由を返すには(– localizedFailureReason)メソッドを使用します。

存在しないファイルにアクセスしてエラーを起こすサンプル

#pragma mark NSError
-(void)method005
{
	NSError *anError = nil;
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filename = @"testWritecharset2.bitmap";
    NSURL *absoluteURL = [NSURL fileURLWithPathComponents:[NSArray arrayWithObjects:documentsDirectory, filename, nil]];
    
    if ([absoluteURL checkResourceIsReachableAndReturnError:&anError]) {
        NSLog(@"%s %@",__FUNCTION__,[anError description]);
    }else {
        NSLog(@"%s %@",__FUNCTION__,[anError description]);
        NSLog(@"%s code = %d",__FUNCTION__,[anError code]);
        NSLog(@"%s domain = %@",__FUNCTION__,[anError domain]);
        NSLog(@"%s userInfo = %@",__FUNCTION__,[[anError userInfo] description]);
        NSLog(@"%s localizedDescription = %@",__FUNCTION__,[anError localizedDescription]);
        NSLog(@"%s localizedRecoveryOptions = %@",__FUNCTION__,[anError localizedRecoveryOptions]);
        NSLog(@"%s localizedRecoverySuggestion = %@",__FUNCTION__,[anError localizedRecoverySuggestion]);
        NSLog(@"%s localizedFailureReason = %@",__FUNCTION__,[anError localizedFailureReason]);
        
    }
}

適合するプロトコル

サブクラス化の注意

引数

参照

メソッド

Errorプロパティの取得

– code
– domain
– userInfo

エラーからの回復の試み

– recoveryAttempter

ヘルプアンカーの表示

– helpAnchor