RxPY - Operatori di gestione degli errori
catturare
Questo operatore terminerà la sorgente osservabile quando si verifica un'eccezione.
Sintassi
catch(handler)
Parametri
gestore: questo osservabile verrà emesso quando l'osservabile sorgente ha un errore.
Valore di ritorno
Restituirà un osservabile, che avrà valori dalla sorgente osservabili prima dell'errore, seguiti da valori osservabili dal gestore.
Esempio
from rx import of, operators as op
from datetime import date
test = of(1,2,3,4,5,6)
handler = of(11,12,13,14)
def casetest(e):
if (e==4):
raise Exception('err')
else:
return e
sub1 = test.pipe(
op.map(lambda e : casetest(e)),
op.catch(handler)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)),
on_error = lambda e: print("Error : {0}".format(e)))
In questo esempio, abbiamo creato un'eccezione, quando il valore di origine dell'osservabile è 4, quindi il primo osservabile viene terminato lì e successivamente seguito dai valori del gestore.
Produzione
E:\pyrx>python testrx.py
The value is 1
The value is 2
The value is 3
The value is 11
The value is 12
The value is 13
The value is 14
riprova
Questo operatore riproverà sull'origine osservabile quando si verifica un errore e una volta terminato il conteggio dei tentativi, terminerà.
Sintassi
retry(count)
Parametri
count: il numero di volte per riprovare se c'è un errore dalla fonte osservabile.
Valore di ritorno
Restituirà un osservabile dalla sorgente osservabile in sequenza ripetuta secondo il numero di tentativi fornito.
Esempio
from rx import of, operators as op
test = of(1,2,3,4,5,6)
def casetest(e):
if (e==4):
raise Exception('There is error cannot proceed!')
else:
return e
sub1 = test.pipe(
op.map(lambda e : casetest(e)),
op.retry(2)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)),
on_error = lambda e: print("Error : {0}".format(e)))
Produzione
E:\pyrx>python testrx.py
The value is 1
The value is 2
The value is 3
The value is 1
The value is 2
The value is 3
Error: There is error cannot proceed!