Actions
Feature #18982
closedAdd an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
Feature #18982:
Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
Status:
Closed
Assignee:
-
Target version:
-
Description
This replaces [Feature #18965]
Currently these methods raise in three occasions:
-
ThreadError(queue empty)for#popinnonblock=truemode, and the operation would block. -
ThreadError(queue full)forSizedQueue#pushinnonblock=truemode, and the operation would block. -
ClosedQueueErrorif trying to#pushin a closed queue.
I see several reasons to prefer a nil return value.
- Queue is often used in conjunction with threads, so you have to be very careful not to rescue an unrelated
ThreadError. - Queue if often used for low level code, deep in the stack, so exceptions are costly.
I propose that passing exception: false would cause the method to return nil instead of raising in the three cases listed above.
The argument exception: true is consistent with various other methods such as IO#read_nonblock(exception: false).
Actions