RxPY - Operadores de tratamento de erros

pegar

Este operador encerrará a fonte observável quando houver uma exceção.

Sintaxe

catch(handler)

Parâmetros

handler: Este observável será emitido, quando o observável de origem tiver um erro.

Valor de retorno

Ele retornará um observável, que terá valores da fonte observáveis ​​antes do erro, seguidos por valores do manipulador observáveis.

Exemplo

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)))

Neste exemplo, criamos uma exceção, quando o valor de origem do observável é 4, de modo que o primeiro observável é encerrado lá e, posteriormente, seguido pelos valores do manipulador.

Resultado

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

tentar novamente

Este operador tentará novamente na fonte observável quando houver um erro e, assim que a contagem de novas tentativas for concluída, ela será encerrada.

Sintaxe

retry(count)

Parâmetros

contagem: o número de vezes para tentar novamente se houver um erro da fonte observável.

Valor de retorno

Ele retornará um observável da fonte observável em sequência repetida de acordo com a contagem de novas tentativas fornecida.

Exemplo

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)))

Resultado

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!