Этот код работает, и я полностью доволен им.
Обратите внимание, функция fromFile () выбрасывает.
return container
}
.tryCatch { error -> Just<Container> in
print(error.localizedDescription)
return Just(try fromFile())
}
.catch { error -> Empty<Container, Never> in
print(error.localizedDescription)
return Empty()
}
Но теперь, в качестве упражнения, я хочу попробовать сделать его вложенным :

На самом деле во вложенном случае это должен быть .catch, а не .tryCatch:
[Отредактировано]
Окей, в случае с желтым предупреждением, это, вероятно, из-за издателя Just
имеет тип ошибки <Never>
. Поэтому мы должны применить оператор setFailureType сразу после Just:
return Just(try fromFile())
.setFailureType(to: Error.self)
.catch { error -> Empty<Container, Never> in
print(error.localizedDescription)
return Empty()
}
Теперь он компилируется без каких-либо предупреждений, но не работает должным образом. catch
не ловит никаких ошибок. Ошибка распространяется далее на sink
оператора.