gpt4 book ai didi

c# - 异步 I/O 未捕获的异常去哪里了

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:42 26 4
gpt4 key购买 nike

我正在开发一个基于控制台的 .NET 应用程序(使用单声道)。我正在使用异步 I/O (Begin/EndReceive)。

我处于几层深的回调链的中间,如果抛出异常,它不会被困在任何地方(我希望它冒泡到控制台,因为目前没有异常处理)。

但是,当我在它发生的地方记录它时查看堆栈跟踪,堆栈没有显示它返回到初始执行点。

我试过 AppDomain.UnhandledException 技巧,但在这种情况下不起作用。

System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: size
at System.Net.Sockets.Socket.BeginReceive (System.Byte[] buffer, Int32 offset, Int32 size, SocketFlags socket_flags, System.AsyncCallback callback, System.Object state) [0x00000]
at MyClass+State.BeginReceive () [0x00000]

最佳答案

我相信异步调用期间生成的任何错误都应该在调用 EndAction 方法(在您的情况下为 EndReceive)时抛出。至少,这是我在使用 CLR (MSFT) 实现时所经历的,而 Mono 应该做同样的事情,尽管它可能可能在这里有点错误(不过认为这不太可能)。如果您在 Visual Studio 中,我建议您打开捕获所有异常的选项(i)在“调试”>“异常”菜单中)——也许在您使用的任何 IDE 中都有类似的选项?

关于c# - 异步 I/O 未捕获的异常去哪里了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/571566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com