throwError

항상 예외를 던지는 단항 함수를 반환합니다 — 문장이 아니라 함수를 요구하는 자리를 위해서입니다.

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

강의

Dart에서 throw는 문장이라 함수 값을 기대하는 자리에 그대로 넣을 수 없습니다. throwError(toError)가 이 문제를 해결합니다. 문제가 된 값으로부터 Object(예외나 에러)를 만드는 함수를 넘기면, 콜백이 필요한 어디에든 전달할 수 있는 Never Function(T)를 돌려받습니다. 가장 흔한 쓰임은 orElse 자리입니다 — cases에 넘겨서 "아무것도 일치하지 않음"을 조용한 폴백 대신 확실한 실패로 바꿔 줍니다.

반환 타입이 Never이므로 호출하면 언제나 예외가 발생하며, T 타입의 값을 실제로 반환하는 일은 없습니다. 에러를 전파시키지 않고 복구하고 싶다면 호출 지점을 try/catch로 감싸세요.

데모 1 · 기본

데모 2 · cases의 폴백으로 사용하기

조용히 흘려보내는 대신, throwError는 일치하지 않은 값을 눈에 띄고 잡을 수 있는 실패로 만들어 줍니다.

직접 해 보기

연습: "구현되지 않음"을 알리는 예외를 던지는 함수를 만들고 실제로 호출해 보세요.

관련 항목: throwIf — 별도의 빌더 함수 없이 조건부로 던집니다 · cases — throwError가 orElse로 자리 잡는 곳 · when / unless — 예외를 던지지 않는 조건부 변환 · find — 일치하는 값이 없으면 예외 대신 null을 반환합니다