throwError

Devuelve una función unaria que siempre lanza — para lugares donde se espera una función, no una sentencia.

Never Function(T) throwError<T>(Object Function(T) toError)

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.

Relacionado: throwIf — lanza de forma condicional, sin una función constructora aparte · cases — el sitio donde más se usa throwError: como orElse · when / unless — transformaciones condicionales que no lanzan · find — devuelve null en vez de lanzar cuando no hay coincidencia