捕获异步操作异常不起作用
Catching async operation exception is not working
我有来自
的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:
The requested address is not valid in its context
255.255.255.255:25565
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)
at System.Net.Sockets.TcpClient.<>c.b__21_1(IAsyncResult
asyncResult)
at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult
iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean
requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at PersonDesk.Socket.d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object
state)
at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()}
IP 地址只是要引发异常的占位符
public async void startTCP()
是一个 async void
。你不应该那样做。因为
I surround it with try catch block
这是对 async void
不起作用的一件事。
要获得完整答案,您必须说明如何调用 startTCP()。涉及完整的调用链。
它似乎是关于 WPF 的,所以从事件处理程序开始(可以 是一个异步无效)。
我有来自
的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: The requested address is not valid in its context 255.255.255.255:25565 at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.TcpClient.<>c.b__21_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at PersonDesk.Socket.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state) at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()}
IP 地址只是要引发异常的占位符
public async void startTCP()
是一个 async void
。你不应该那样做。因为
I surround it with try catch block
这是对 async void
不起作用的一件事。
要获得完整答案,您必须说明如何调用 startTCP()。涉及完整的调用链。
它似乎是关于 WPF 的,所以从事件处理程序开始(可以 是一个异步无效)。