gpt4 book ai didi

c# - Try/Catch block 中的非等待任务会发生什么

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:52 25 4
gpt4 key购买 nike

当方法返回包含在 try/catch block 中的 Task 时会发生什么?如果未等待的 Task 抛出异常,是否捕获/处理了异常?

例如,如果 DoSomethingAsync() 抛出异常,我可以在 TryCatchMethod()try/catch block 中处理它吗?

Task TryCatchMethod()
{
try
{
return DoSomethingAsync();
}
catch(Exception e)
{
//Handle Exception
}
}

async Task DoSomethingAsync()
{
await Task.Delay(10000);
throw new System.Exception();
}

最佳答案

如果 DoSomethingAsync 抛出异常,则捕获该异常。如果它返回一个错误的任务,而不是抛出异常,那么在您尝试获取任务结果(通过等待)之前,没有异常可以捕获。由于您没有在 try block 中执行此操作,因此它不会运行您的 catch block 。

请注意,如果该方法被标记为 async,则该方法主体中抛出的任何异常都会被捕获并导致该方法返回错误任务,而不是该方法抛出异常。对于抛出异常的方法,该方法需要返回一个 Task 而不被标记为 async

关于c# - Try/Catch block 中的非等待任务会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47316145/

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