X::Scheduler::CueInNaNSeconds

X::Scheduler::CueInNaNSeconds

스케줄러에 작업을 예약할 때 :at, :in, :every 같은 인자에 시간 값을 넘기는데, 여기에 NaN을 실수로 넘기면 어떻게 될까요? Raku는 그걸 그냥 넘기지 않고 X::Scheduler::CueInNaNSeconds 예외를 던져서 알려줘요.

출처: Raku 공식 문서 — X::Scheduler::CueInNaNSeconds

본문

ThreadPoolScheduler.cueCurrentThreadScheduler.cue를 호출하면서 :at, :in, 또는 :everyNaN을 넘기면 이 예외가 던져져요. 예를 들어 다음 코드를 보면,

my Cancellation $c = $*SCHEDULER.cue({
    say 'This will never output :(';
}, at => NaN);

다음과 같은 메시지와 함께 예외가 발생해요.

Cannot pass NaN as a number of seconds to Scheduler.cue

시간 계산을 잘못해서 NaN이 나오는 경우도 있으니, 작업을 예약하기 전에 시간 값이 정상인지 확인하는 게 좋아요.

이 클래스는 2019.05 이후 릴리스에서만 존재해요.