Podczas przenoszenia kodu Java do ObjC, jak najlepiej reprezentować sprawdzone wyjątki?
Pracuję nad przeniesieniem kodu Java do Cocoa / Objective-C do użytku na komputerach Mac OS X. Kod Java mawiele iwiele metod ze sprawdzonymi wyjątkami, takimi jak:
double asNumber() throws FooException {
...
}
Jaki jest najlepszy sposób reprezentowania ich w Objective-C? Wyjątki lub parametry błędów?
- (CGFloat)asNumber {
... // possibly [FooException raise:format:];
}
lub
- (CGFloat)asNumberError:(NSError **)outError {
...
}
Mam wrażenie, że out-błędy są ogólnie lepszym rozwiązaniem dla Objective-C, ale jak widać ... wiele metod, takich jak ta powyżej, będzie dość niewygodnych. I znowu sąwiele tych.
Oczywiście pamiętaj, że tak jestsprawdzone wyjątki w Javie, muszę też dodać@try
bloki lubif (*outError) {...}
sprawdza gdziekolwiek te metody są nazywane (wiele miejsc).
Pamiętam, że słyszałem to podczas wchodzenia@try
bloki były kiedyś drogie w Objective-C, są tanie w 64-bitowym lub SL lub innym nowym env (nie pamiętam dokładnie). Nie martwię się o kompatybilność wsteczną, więc jestemZdecydowanie chętny do projektowania tylko dla nowej gorączki.