commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Colebourne <scolebou...@btopenworld.com>
Subject Re: [collections] commons.collections.buffer.BlockingBuffer throws BufferUnderflowException
Date Fri, 17 Jun 2005 22:30:35 GMT
Pito Salas wrote:
> commons.collections.buffer.BlockingBuffer throws  BufferUnderflowException
> 
> Why does that make sense? I would think that a BlockingBuffer cannot  
> underflow on a get().

> So, an InterruptedException is turned into a BufferUnderflowException.
> 
> Usually InterruptedException is just re-thrown. I don't understand  how 
> to interpret the conversion to a BufferUnderflowException, and  whether 
> I can / should safely ignore it.

Buffer.get() can throw the underflow exception, as documented:
  @throws BufferUnderflowException if the buffer is empty

For BlockingBuffer, you would not normally expect to receive the 
underflow exception as the class waits for more data. However, if it 
receives an interrupted exception while waiting we must handle it. We could:
a) silently ignore it (bad)
b) log it (but collections doesn't use logging)
c) throw it

We chose (c), and as InterruptedException is not runtime, it is wrapped 
in a BufferUnderflowException.

You ask if you will receive it. Well, you will if you get a 
InterruptedException during the wait. I can't really be more precise 
than that.

Stephen

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message