避免 StacklessClosedChannelException

我一直在寻找一种避免 StacklessClosedChannelException 的方法,但我什么也没找到。我想这是不安全的,不应该发生,如何避免呢?

stack overflow Avoid StacklessClosedChannelException
原文答案

答案:

作者头像

为避免此类异常,您应该检查通道是否处于活动状态或至少打开。有一个布尔验证可以实现这一点。这是 Kotlin 版本:

    val f: ChannelFuture = bootstrap.connect(HOST, PORT).sync()
    val channel = f.channel()

    if (channel?.isActive == true) {
        val f: ChannelFuture? = channel?.writeAndFlush(msg)?.sync()
    else {
        //Channel not even open and therefore it's not writable
    }

还有一个 ìsWritable 布尔值,但我没有充分测试它。