我有一个名为IConnection的接口
public interface IConnection
{
bool IsConnected { get; }
Task ConnectAsync(IEndPoint remoteEP);
Task<int> SendAsync(byte[] data, int offset, int size);
Task<int> ReceiveAsync(byte[] buffer, int offset, int size);
void Disconnect();
void Close();
event EventHandler<DisconnectedEventArgs> Disconnected;
}
它由两种不同类型的连接实现 - 基于Socket的连接类和基于HTTP的连接类。我还希望将来可以选择添加其他连接类型。
在我的主ChatClient类中启动连接时,我将检查用户的配置,然后根据用户的喜好,创建一个SocketConnection或一个HTTPConnection。从那时起,我只使用它的IConnection接口来引用连接。
IConnection类具有Disconnected事件,该事件在用户调用Disconnect时发生,或者发生某些意外连接错误时引发。 DisconnectedEventArgs将包含有关导致断开连接的原因的信息。
我想知道的是,我如何抽象出不同类型的错误?
套接字可能会遇到许多不同的错误情况,导致它断开连接,包括但不限于 -
http连接也可能遇到许多不同的错误情况,例如 -
如何将套接字的所有可能错误和http连接的所有可能错误合并为一种类型?
我是否使用包含所有可能错误的值的枚举?
我是否有简单的错误代码和错误描述?
我应该处理多少个套接字错误条件?只有我期望遇到的?或者所有人?
答案 0 :(得分:1)
为什么DisconnectEventArgs
不包含public Exception Error { get; set; }
。正常调用Error
时,Disconnect
为空,否则包含Socket或Http异常。