throwIf

Lanza cuando se cumple un predicado; en caso contrario devuelve el valor sin cambios.

T throwIf<T>(bool Function(T) predicate, Object Function(T) toError, T value)

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.

Relacionado: 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