use throw for exception when_at