Мне нужно реализовать структуру try-catch в Objective-C для обработки брошенных Swift NSErrors.
Я написал менеджер NetService с кодом Swift и внедряю его на уже существующем Objective-CПользовательский интерфейс.
Однако всякий раз, когда я выкидываю ошибку из своего класса Swift, структура try-catch не может перехватить ошибку и переходит к блоку finally.
Определение ошибки Swift:
enum NEONetServiceErrors: Int
{
case requestMadeWithoutIp
}
struct NEONetServiceErrorStrings
{
let requestMadeWithoutIp = ["NEONetService Error: Request made without IP": NEONetServiceErrors.requestMadeWithoutIp]
}
Быстрое генерирование ошибок:
@objc func requestHelloPage() throws
{
if serviceiPAddress != nil
{
makeHelloRequest()
}
else
{
throw NSError(domain: errorStrings.domain, code: NEONetServiceErrors.requestMadeWithoutIp.rawValue, userInfo:errorStrings.requestMadeWithoutIp)
}
}
Свойства Objective-C:
@property NEONetServiceManager* netServiceManager;
@property NSError* _Nullable __autoreleasing * _Nullable netServiceError;
Обработка ошибок Objective-C:
- (IBAction)pressUpdateButton:(id)sender
{
@try
{
[self.netServiceManager requestHelloPageAndReturnError: self.netServiceError];
}
@catch (NSException *exception)
{
NSLog(@"Throwing");
}
@finally
{
NSLog(@"Finally");
}
}
Вывод:
2019-10-18 14:47:03.289268-0300 NEOFirmUpdate[16533:2389800] Start
2019-10-18 14:47:03.292696-0300 NEOFirmUpdate[16533:2389800] Finally
Не могли бы вы помочь мне понять, что я делаю неправильно с обработкой ошибок?