デスクトップ Mac OS X で使用するために、Java コードベースを Cocoa/Objective-C に移植する作業を行っています。Java コードには、次のようなチェック済みの例外を伴うメソッドがたくさんあります。
double asNumber() throws FooException {
...
}
これらを Objective-C で表現する最良の方法は何ですか? 例外またはエラー出力パラメータ?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
また
- (CGFloat)asNumberError:(NSError **)outError {
...
}
通常、Objective-C では out-errors の方が優れたソリューションであると私は感じていますが、ご覧のとおり、上記のような多くのメソッドはかなりぎこちなく見えます。繰り返しますが、これらはたくさんあります。
もちろん、これらはJava のチェック例外であるため、これらのメソッドが呼び出される場所 (多くの場所) に@try
ブロックまたはチェックを追加する必要があることに注意してください。if (*outError) {...}
Objective-C ではブロックに入るのがかつて高価でしたが、64 ビットまたは SL またはその他の新しい環境では安価であると聞いたことを思い出し@try
ます (正確には思い出せません)。下位互換性についてはまったく気にしていないので、最新のホットさだけを考えて設計したいと思っています。