Package: groovy.concurrent

## [Java] Class ChannelClosedException

- groovy.concurrent.ChannelClosedException

-     public class ChannelClosedException
      extends IllegalStateException

  Thrown when an AsyncChannel operation is attempted after the channel has been closed.

  This exception is raised in the following situations:

  - AsyncChannel.send — the channel was closed before or during the send attempt. Pending senders that were waiting for buffer space when the channel closed also receive this exception.
  - AsyncChannel.receive — the channel was closed and all buffered values have been drained. Note that values buffered before closure are still delivered normally; only once the buffer is exhausted does this exception appear.

  When used with `for await`, the loop infrastructure translates `ChannelClosedException` into a clean end-of-stream signal (i.e., the loop exits normally rather than propagating the exception):

       def ch = AsyncChannel.create()
       // ... producer sends values, then calls ch.close()
       for await (item in ch) {
           process(item)       // processes all buffered values
       }
       // loop exits cleanly after the channel is closed and drained

  See Also:
    AsyncChannel.send
    AsyncChannel.receive
    AsyncChannel.close
  Since:
    6.0.0

- - ### Constructor Summary

    Constructors
    Constructor and description
    `ChannelClosedException(String message)` Creates a `ChannelClosedException` with the specified detail message.
    `ChannelClosedException(String message, Throwable cause)` Creates a `ChannelClosedException` with the specified detail message and cause.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class IllegalStateException` | `addSuppressed, equals, fillInStackTrace, getCause, getClass, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, hashCode, initCause, notify, notifyAll, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### public ChannelClosedException(String message)

      Creates a `ChannelClosedException` with the specified detail message.

      Parameters:
        `message` - the detail message describing which operation failed

    - #### public ChannelClosedException(String message, Throwable cause)

      Creates a `ChannelClosedException` with the specified detail message and cause.

      Parameters:
        `message` - the detail message
        `cause` - the underlying cause (e.g., an InterruptedException if the thread was interrupted while waiting on a channel operation)