throwIf
Lanza cuando se cumple un predicado; en caso contrario devuelve el valor sin cambios.
Lección
throwIf(predicate, toError, value) es una cláusula de guarda
que puedes soltar en mitad de una expresión: si
predicate(value) es true, lanza
toError(value); si no, te devuelve value sin
cambios. Eso lo hace cómodo dentro de un callback de map,
cuando quieres validar cada elemento a su paso por el pipeline y fallar
ruidosamente en cuanto uno no sea válido.
Es básicamente when con una rama
«then» que siempre lanza en lugar de devolver un valor — así que envuelve
cualquier punto de llamada en try/catch para
observar el fallo o recuperarte de él.
Demo 1 · Fundamentos
Demo 2 · Validar un pipeline
Cada edad se valida conforme se mapea; la primera infracción aborta la
llamada entera a toList():
Pruébalo tú
Ejercicio: usa throwIf para protegerte del stock a cero
mientras sumas este inventario.
throwError — una función que lanza por sí sola, sin condición ·
when — sustituye un valor en vez de lanzar ·
cases — despacha entre varios predicados ·
add — usado arriba como reductor