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 — 위에서 리듀서로 사용한 함수