【发布时间】:2023-03-10 07:47:01
【问题描述】:
例如:
第一步:绑定UnhandledException事件。
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
第二步:
try
{
//at here,do asynchronous operation and throw a exception.
}
catch (Exception ex)
{
Console.WriteLine("error");
}
当异步操作抛出异常时,它没有调用catch代码,只是触发了UnhandledException事件,调用end事件后退出应用程序。
我想在 catch 语句中捕获异常并避免退出应用程序。
================================================ ========
异步代码是异步socket操作。在socket异步接收消息事件(BeginReceive,EndReceive)中,我抛出了一个OverFlowException。
throw new OverflowException("chunk size too long.");
==============================================
你是对的,现在我在异步操作中捕获异常并将其传递给原始类(这意味着异常将在同一个线程上抛出,可以尝试...可以调用catcy语句)
【问题讨论】:
-
如何开始你的异步操作?您应该参考有关用于使操作异步的任何工具的文档。其中一些可能会将异常转发给调用者线程,其中一些可能不会并依赖操作来捕获所有内容,有些(例如:新的
async/await方式)甚至可能吞下异常。