首页 > 后端开发 > C++ > 如何从 .NET 中的单独线程捕获异常?

如何从 .NET 中的单独线程捕获异常?

Linda Hamilton
发布: 2025-01-05 06:54:39
原创
604 人浏览过

How to Catch Exceptions from Separate Threads in .NET?

捕获单独线程中抛出的异常

在多线程应用程序中,处理单独线程中发生的异常至关重要。本指南将演示实现此目的的两种方法。

.NET 4 及更高版本中基于任务的异常处理

考虑使用 Task而不是创建新线程。对于Task,可以通过.Exceptions 属性检索异常。这里有两种方法:

  • 在单独的方法中:
Task<int> task = new Task<int>(Test);
task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted);
task.Start();
...

static void ExceptionHandler(Task<int> task)
{
    Console.WriteLine(task.Exception.Message);
}
登录后复制
  • 在同一个方法中方法:
Task<int> task = new Task<int>(Test);
task.Start();

try
{
    task.Wait();
}
catch (AggregateException ex)
{
    Console.WriteLine(ex);
}
登录后复制

.NET 3.5 中的异常处理

对于 .NET 3.5,请考虑以下方法:

  • 在孩子的主题:
Exception exception = null;
Thread thread = new Thread(() => Test(0, 0));
thread.Start();

thread.Join();

if (exception != null)
    Console.WriteLine(exception);
登录后复制
  • 在来电者的主题中:
Exception exception = null;
Thread thread = new Thread(() =>
{
    try
    {
        Test(0, 0);
    }
    catch (Exception ex)
    {
        lock (exceptionLock)
        {
            exception = ex;
        }
    }
});
thread.Start();
thread.Join();

if (exception != null)
    Console.WriteLine(exception);
登录后复制

以上是如何从 .NET 中的单独线程捕获异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板