Wie lassen sich überprüfte Ausnahmen am besten darstellen, wenn Java-Code nach ObjC portiert wird?
Ich arbeite an der Portierung einer Java-Codebasis nach Cocoa / Objective-C zur Verwendung auf einem Desktop-Mac OS X. Der Java-Code hatviele undviele von Methoden mit geprüften Ausnahmen wie:
double asNumber() throws FooException {
...
}
Wie lassen sich diese in Objective-C am besten darstellen? Ausnahmen oder Fehler-Out-Parameter?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
oder
- (CGFloat)asNumberError:(NSError **)outError {
...
}
Ich habe das Gefühl, dass Aus-Fehler im Allgemeinen die bessere Lösung für Objective-C sind, aber wie Sie sehen können, werden viele Methoden wie die oben beschriebene ziemlich umständlich aussehen. Und wieder gibt esviele von diesen.
Denken Sie natürlich daran, da dies sindgeprüft Ausnahmen in Java muss ich entweder hinzufügen@try
Blöcke oderif (*outError) {...}
prüft, wo diese Methoden aufgerufen werden (viele von Orten).
Ich erinnere mich, dass ich das beim Betreten hörte@try
Blöcke waren einmal in Objective-C teuer, es ist billig in 64-Bit oder SL oder einer anderen neuen Umgebung (erinnere mich nicht genau). Ich bin überhaupt nicht besorgt über die Abwärtskompatibilität, also bin ich esbestimmt bereit, nur für die neue Schärfe zu entwerfen.