In ReactiveCocoa, qual è la differenza tra il metodo subscribeError:
rispetto a catch:
? Perché dovresti voler restituire un segnale in catch:
?Differenza tra catch: e subscribeError:
risposta
-subscribeError:
sottoscrive effettivamente: questa è la fine della linea. Mentre -catch:
trasforma semplicemente un segnale in un nuovo segnale (e in realtà non si abbona). Pensa al segnale come a un programma. Quando fai il -subscribeError:
, stai dicendo al computer "Voglio eseguire questo programma, ma voglio solo sentirti da te se si verifica un errore". Quando si è -catch:
, si sta dicendo "Ho questo programma che potrebbe generare un errore e voglio crearne uno nuovo basato su quello vecchio che gestisce quell'errore in modo diverso".
Il motivo per cui è necessario restituire un segnale in -catch:
è che non è semplicemente per gli errori di squelching: in realtà è per rispondere agli errori. Una volta che il segnale originale è stato errato, è andato tutto bene: se vuoi che il segnale risultante continui dopo un errore, devi dare un nuovo segnale in -catch:
.
Esempi di ciò che si potrebbe fare in -catch:
:
- ritorno
[RACSignal empty]
se si vuole riuscire in silenzio e non genera un errore. - Restituisce
[RACSignal error:err]
se si desidera rilanciare l'errore dopo aver fatto qualcosa, o forse si desidera trasformare l'errore. - Restituisce qualche altro segnale a cui si desidera effettuare l'iscrizione nel caso in cui il primo errori venga eliminato.
- 1. Differenza tra catch (Exception) e Catch (eccezione ex)
- 2. Differenza tra finally e write after catch
- 3. Differenza tra std :: eccezione e "..."
- 4. La differenza tra $ * e $ @
- 5. Differenza tra $ # e $ {# @}
- 6. Differenza tra. e #
- 7. MySQL: Differenza tra ",", "e"
- 8. Differenza tra "o" e "||"
- 9. Differenza tra unwrapObservable e()
- 10. Differenza tra oggetto e *?
- 11. Differenza tra "**/* /" e "** /"?
- 12. Differenza tra jquery e $
- 13. CMake: differenza tra $ {} e "$ {}"
- 14. Differenza tra ". +" E ". +?"
- 15. VBA: Differenza tra & e +
- 16. Differenza tra numpy.logical_and e &
- 17. Differenza tra | = e^= css
- 18. Differenza tra `% in%` e `` ==
- 19. Differenza tra FileStreamResult e FilePathResult?
- 20. Qual è la differenza tra gestione delle eccezioni da blocco catch classe direttamente genitore e sottoclassi
- 21. In Angular, qual è la differenza concettuale tra l'errore e le funzioni catch per le promesse?
- 22. Differenza tra Dizionario e Hashtable
- 23. Differenza tra SCM e SVN
- 24. differenza tra RDLC e SSRS
- 25. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 26. Differenza tra "\ n" e Environment.NewLine
- 27. Differenza tra QSharedPointer e QSharedDataPointer?
- 28. Differenza tra toFixed() e toPrecision()?
- 29. Differenza tra strncpy e memcpy?
- 30. Differenza tra crittografia e hashing
Buona spiegazione. lanciando un AlertView da '-catch:' e restituendo un segnale vuoto per "squelch" l'errore sembra un punto di ingresso comune per la gestione degli errori con RAC, almeno nella mia esperienza. –
@terrylewis Fai attenzione a infilare lì, comunque. Poiché i valori di un segnale possono essere consegnati su un thread arbitrario, anche il blocco '-catch:' può essere eseguito qui. –