throwError
Devuelve una función unaria que siempre lanza — para lugares donde se espera una función, no una sentencia.
Lección
throw es una sentencia en Dart, así que no puedes colocarlo
directamente en un sitio que espera un valor de función.
throwError(toError) resuelve eso: le das una función que
construye un Object (una excepción o un error) a partir del
valor problemático y recibes a cambio un
Never Function(T) que puedes pasar a cualquier sitio donde se
espere un callback — lo más habitual, como el orElse de
cases, para convertir un «no coincidió
nada» en un fallo rotundo en lugar de un valor de reserva silencioso.
Como el tipo de retorno es Never, llamarla siempre lanza;
nunca llega a devolver un valor de tipo T. Envuelve cualquier
punto de llamada en try/catch si quieres
recuperarte en lugar de dejar que el error se propague.
Demo 1 · Fundamentos
Demo 2 · Como valor de reserva de cases
En lugar de pasar de largo en silencio, throwError convierte
un valor sin coincidencia en un fallo ruidoso y capturable:
Pruébalo tú
Ejercicio: construye una función que lance «no implementado» y actívala.