Objective-Cの例外処理の方法 [Cocoa覚え書き]
Objective-Cの例外処理は、C++のtry/catch/throwとやりかたはかわらない。
○例外の取得方法(catch)
NS_DURING
…
例外が発生しそうな処理
…
NS_HANDLER
捕獲した例外の対処
NS_ENDHANDLER
通常、例外を捕獲しないと、そこで処理が終わってしまう(おそらく、run loopへ戻る)が、ハンドラで捕獲すると、そのまま実行し続けることもできる。
NS_HANDLERとNS_ENDHANDLERの間の例外処理には
NS_VALUERETURN();とNS_VOIDRETURN;を使ってメソッドから抜け出すことができる。
○例外の発生(throw)
NSExceptionのインスタンスを作成して、インスタンスメソッドのriseを実行する。
例えば、
[[NSException exceptionWithName:NSInvalidArgumentException reason:@"i don't like this." userInfo:nil] raise];
exceptionWithNameのところは、ユーザ定義で任意の文字列を使用することもできる。NSExceptionのクラス定義(ヘッダファイル)を見ると、既にいくつか定義されている。
詳細は、Objective-C/Exceptionのドキュメント参照のこと。
(この記事がNGワードチェッカにかからないことを祈る(笑))
トラックバック 1
藤棚工房別棟 −徒然−:XcodeでObjective-Cの例外処理を有効にするに書いたような@try, @catch(), @throw, @finallyなどを使用した例外処理はコンパイラオプションの-fobjc-exceptionを使用する必要があります。 私がObjective…[続く]







コメント 0