Objective-C に慣れていないので、エラーを処理してキャッチするための一般的/標準的/適切な方法は何だろうと考え始めています。
これを行うために NSError を使用することは可能かもしれませんが、それは良い考えですか、それともココアのハイジャックですか?
Objective-C に慣れていないので、エラーを処理してキャッチするための一般的/標準的/適切な方法は何だろうと考え始めています。
これを行うために NSError を使用することは可能かもしれませんが、それは良い考えですか、それともココアのハイジャックですか?
それが NSError クラスの目的であると確信しています - エラーの詳細を教えてください。最も一般的なパターンは、次のように NSError オブジェクトへのポインターを受け取るメソッドです。
- (id)doSomethingWithArgument:(id)arg error:(NSError **)error
このメソッドはnil
、何かを実行した結果として何らかの値 (または場合によっては ) を返しますが、呼び出しが失敗した場合は、失敗に関する詳細と共に渡されたポインターに NSError オブジェクトを配置します。メソッドでエラーが発生した場合に何が返されるかは、ドキュメントで指定する必要があります。
頭に浮かぶ他の方法は@throw
-@catch
ブロックです。ただし、Objective-C @throw
ing では、例外はかなり計算コストが高くなる可能性があり、通常は真に例外的な状況でのみ実行することをお勧めします。
編集:うわー、多くの人が@throw
例外について非常に強い意見を持っていることがわかりました。この問題に関する(非常に役立つ)コメントを要約するには:
error
上記の方法を使用するか、NSNotification のインスタンスを投稿してください。@throw
/ブロックを大量に使用することになった場合は@catch
、それらを取り巻くロジックに十分注意してください。Objective-C には、メソッドを分離して他のスレッドで実行したり、実行を遅らせたりする方法がたくさんあります。コードを記述するときは、これらすべての可能性を考慮してください。最後に、もう 1 つの非常に有効なポイント:
error
、戻り値はそれを示す必要があります。両方を実行しようとしないでください (部分的に有効なオブジェクトを返し、オブジェクトを設定しerror
ます)。