При переносе кода Java в ObjC, как лучше всего представлять проверенные исключения?
Я работаю над переносом кодовой базы Java на Cocoa / Objective-C для использования на настольном Mac OS X. Код Java имеетlots а такжеlots методов с проверенными исключениями, такими как:
double asNumber() throws FooException {
...
}
Какой лучший способ представить их в Objective-C? Исключения или выходные параметры ошибки?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
или же
- (CGFloat)asNumberError:(NSError **)outError {
...
}
У меня есть ощущение, что аут-ошибки, как правило, являются лучшим решением для Objective-C, но, как вы можете видеть ... многие методы, подобные приведенному выше, будут выглядеть довольно неловко. И снова естьlots из этих.
Конечно, имейте в виду, что, поскольку ониchecked исключения в Java, мне нужно будет добавить либо@try
блоки илиif (*outError) {...}
проверяет, где вызваны эти методы (lots мест).
Я помню, слышал, что при входе@try
Когда-то блоки были в Objective-C дорогими, они дешевы в 64-битной или SL-версии или какой-то другой новой среде (точно не помню). Меня совсем не беспокоит обратная совместимость, поэтому яdefinitely готовый дизайн только для новой жары.