我不明白为什么当await语句被try / catch包围时,不会捕获异步方法中抛出的异常,这会成为崩溃应用程序的未处理异常。
理解这个例外的原因,我不希望得到答案。我假设异常会被捕获。我担心应用程序中的异常处理没有做到未来异常的预期。
using Amazon.Lambda.Model;
InvokeResponse invokeResponse;
var lambdaRequest = new InvokeRequest {...};
try
{
var task = _awsLambdaClient.InvokeAsync(lambdaRequest);
invokeResponse = await task; <<== throws TaskCanceledException
}
catch (Exception e)
{
Log.Error(...);
return
}
C#环境是Mono,Xamarin.Android是具体的,虽然我想在.NETCORE控制台应用程序中编译的相同代码也会重现,除非这是Mono中的一个我怀疑的错误。我假设我误解了一些关于异常处理的事情。
更新
在.NETCORE20控制台应用程序中尝试相同的代码,并处理TaskCanceledException。所以它看起来像是Mono / Xamarin.Android特有的问题。
新的更新:在能够重复这几天后,当然我的repro停止了复制,现在异常现在也被Mono应用程序捕获了。不确定发生了什么。