egametang/ET · error · Exception

default conn throw Exception! {channelId}

Error message

default conn throw Exception! {channelId}

What it means

AService.GetChannelConn is a virtual method whose base implementation throws, signalling that the default service does not track per-channel connection ids. Only KCP-style services override it to return (LocalConn, RemoteConn); calling it on a base or non-KCP service is a contract violation.

Source

Thrown at Packages/cn.etetet.core/Scripts/Core/Share/Network/AService.cs:83

            this.Id = 0;
        }

        public abstract void Update();

        public abstract void Remove(long id, int error = 0);

        public bool IsDisposed()
        {
            return this.Id == 0;
        }
        
        public abstract void Create(long id, IPEndPoint ipEndPoint);

        public abstract void Send(long channelId, MemoryBuffer memoryBuffer);

        public virtual (uint, uint) GetChannelConn(long channelId)
        {
            throw new Exception($"default conn throw Exception! {channelId}");
        }
        
        public virtual void ChangeAddress(long channelId, IPEndPoint ipEndPoint)
        {
        }
    }
}

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. Call GetChannelConn only on services known to override it (KService).
  2. If you author an AService subclass that needs conn ids, override GetChannelConn.
  3. Check the concrete service type before invoking.

Example fix

// before
(uint l, uint r) = anyService.GetChannelConn(channelId);
// after
if (service is KService kService)
    (uint l, uint r) = kService.GetChannelConn(channelId);
Defensive patterns

Strategy: type-guard

Validate before calling

null

Type guard

public static bool SupportsGetChannelConn(AService s) => s is KService;

Try / catch

null

Prevention

When it happens

Trigger: Holding an AService reference (not the concrete KService) and calling GetChannelConn on a TCP/websocket service that never overrode it, or on a custom AService subclass that forgot the override.

Common situations: New AService implementation not yet implementing conn tracking, or generic code that assumes all services support GetChannelConn.

Related errors


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/5a2171af027fc6d8. Report an issue: GitHub.