gpt4 book ai didi

c# - 从异步方法捕获自定义异常

转载 作者:太空狗 更新时间:2023-10-29 18:26:31 26 4
gpt4 key购买 nike

我试图捕获在异步方法中抛出的自定义异常,但由于某种原因,它总是最终被通用异常捕获 block 捕获。请参阅下面的示例代码

class Program
{
static void Main(string[] args)
{
try
{
var t = Task.Run(TestAsync);
t.Wait();
}
catch(CustomException)
{
throw;
}
catch (Exception)
{
//handle exception here
}
}

static async Task TestAsync()
{
throw new CustomException("custom error message");
}
}

class CustomException : Exception
{
public CustomException()
{
}

public CustomException(string message) : base(message)
{
}

public CustomException(string message, Exception innerException) : base(message, innerException)
{
}

protected CustomException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
}

最佳答案

问题是 Wait 抛出一个 AggregateException,而不是您要捕获的异常。

你可以使用这个:

try
{
var t = Task.Run(TestAsync);
t.Wait();
}
catch (AggregateException ex) when (ex.InnerException is CustomException)
{
throw;
}
catch (Exception)
{
//handle exception here
}

关于c# - 从异步方法捕获自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581990/

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