Open e8-ChenKaipeng opened 2 years ago
重新连接时,可能会有多种异常,_expectedExceptions 中仅仅预定义了几种。
有的用户在 unity 或者 xamarin 上使用它,这时连接失败会抛出其它异常,这些异常在更高层的程序集上,所以此库不可能包含所有的异常。
例如,在 xamarin Android 上,抛出的异常可能是 Java.Net.SocketException
,这个异常类型可能定义在 Xamarin for Android(我不确定具体在哪里),库不会知道具体平台的异常,这时需要用户自己去添加 ExpectedExceptions
如何你确定某个异常,应该重新连接,你应该把异常添加到 _expectedExceptions 中:
var io = new SocketIO(...);
io.AddExpectedException(typeof(YourException));
感谢你的回复.
我期望的是不会产生异常而是以事件的形式通知给我. 例如XXXErrorEvent. 异常可能会导致整个程序的崩溃. 而且对于线程中的异常还无法捕获. 不可预料的异常让程序崩溃并且不能全局捕获到. 这会对我们的项目影响有些大.
我会修改代码使其以事件的形式返回错误而不是异常.
目前我在做性能测试.
关于SocketClient SocketIO.ConnectAsync 关于这方法.如图所示位置的throw.
问题Crash: 复现步骤:
SocketIO.InvokeDisconnect: await ConnectAsync().ConfigureAwait(false);
因为异常类型为task cancel. 不在_expectedExceptions 中
{ typeof(TimeoutException), typeof(WebSocketException), typeof(HttpRequestException), typeof(OperationCanceledException) };
解决方案: