捕获异步操作异常无效

时间:2018-05-24 13:39:19

标签: c# exception-handling uwp network-programming async-await

我有来自

的TCP客户端

System.Net.Sockets

public async void startTCP()
{
    await client.ConnectAsync(IPAddress, port);
    stream = client.GetStream();
}

我用try catch块包围它但是当我运行代码并引发此异常时,VS显示我在

UnhandledException += (sender, e) =>
{
    if (global::System.Diagnostics.Debugger.IsAttached) 
        global::System.Diagnostics.Debugger.Break();
};
App.g.i.cs中的

不是我想成为的地方=>自己处理异常

  

System.Net.Internals.SocketExceptionFactory + ExtendedSocketException:   请求的地址在其上下文中无效   255.255.255.255:25565          在System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)          在System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)          在System.Net.Sockets.TcpClient。<> c.b__21_1(IAsyncResult)   asyncResult)          在System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult)   iar,Func2 endFunction,Action1 endAction,Task1 promise,Boolean   requiresSynchronization)       ---从抛出异常的先前位置开始的堆栈跟踪结束---          在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)          在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)          在System.Runtime.CompilerServices.TaskAwaiter.GetResult()          at PersonDesk.Socket.d__10.MoveNext()       ---从抛出异常的先前位置开始的堆栈跟踪结束---          在System.Runtime.CompilerServices.AsyncMethodBuilderCore。<> c.b__6_0(对象)   州)          在System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()}

IP地址只是要引发异常的占位符

1 个答案:

答案 0 :(得分:2)

public async void startTCP()

async void。你不应该这样做。因为

  

我用try catch block

包围它

这是async void无法解决的问题。

要获得完整的答案,您必须说明如何调用startTCP()。涉及完整的调用链。

似乎是关于WPF,所以从事件处理程序开始(可以是异步空格)。