我正在将 Java 代码库移植到 Cocoa/Objective-C 以在桌面 Mac OS X 上使用。Java 代码有很多带有检查异常的方法,例如:
double asNumber() throws FooException {
...
}
在 Objective-C 中表示这些的最佳方式是什么?异常或错误输出参数?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
或者
- (CGFloat)asNumberError:(NSError **)outError {
...
}
我的感觉是,对于 Objective-C 来说,错误通常是更好的解决方案,但是正如你所看到的......很多像上面这样的方法看起来会很尴尬。再说一次,有很多这样的。
当然请记住,由于这些是Java 中的已检查异常,因此我需要在调用这些方法的任何地方添加@try
块或检查(很多地方)。if (*outError) {...}
我记得听说@try
在 Objective-C 中输入块曾经很昂贵,但在 64 位或 SL 或其他一些新环境中它很便宜(不记得确切)。我完全不关心向后兼容性,所以我绝对愿意只为新的热点而设计。