throwIf
술어가 참이면 예외를 던지고, 그렇지 않으면 값을 그대로 반환합니다.
T throwIf<T>(bool Function(T) predicate, Object Function(T) toError, T value)
강의
throwIf(predicate, toError, value)는 식 한가운데에 끼워 넣을 수
있는 가드 절입니다. predicate(value)가 참이면
toError(value)를 던지고, 아니면 value를 손대지 않고
그대로 돌려줍니다. 덕분에 map 콜백 안에서 쓰기 좋습니다.
파이프라인을 흘러가는 원소를 하나씩 검증하다가 잘못된 값이 나오는 순간
바로 실패시킬 수 있기 때문입니다.
본질적으로는 when에서 "then" 분기가
값을 반환하는 대신 항상 예외를 던지는 형태입니다. 따라서 호출 지점을
try/catch로 감싸야 실패를 관찰하거나 복구할 수
있습니다.
데모 1 · 기본
데모 2 · 파이프라인 검증하기
각 나이는 map을 거치면서 검증되고, 첫 번째 위반이 발생하는 즉시
toList() 호출 전체가 중단됩니다.
직접 해 보기
연습: 재고 수량을 합산하면서 throwIf로 재고가 0인 경우를
막아 보세요.
관련 항목:
throwError — 조건 없이 항상 던지는 단독 함수 ·
when — 예외 대신 다른 값으로 대체 ·
cases — 여러 술어로 분기 ·
add — 위에서 리듀서로 사용한 함수