通常,当我在异步调用中使用await
时,会正确捕获异常:
try {
return await DoSomethingAsync();
} catch (Exception ex) {
// Exception is captured here
}
上述代码的唯一要求是方法必须是异步。
但是,我有一个方法不能像委托一样异步,因此我不能使用await
。使用.Result
使我的catch块永远不会捕获任何东西。
try {
return DoSomethingAsync().Result;
} catch (Exception ex) {
// This block never gets called
}
使用.Result
时有没有办法捕获异常?或者我应该尝试不同的方法?
编辑1:方法正文DoSomethingAsync
public async Task<string> DoSomethingAync() {
return await CallAThirdPartyLibrary();
}
编辑2:方法DoSomethingAsync的调用者
Bind<Foo>()
.ToFactory(c => new FooBar(CallMyMethodThatIsNotAsyncAndIsUsingDotResult()))
.PerRequest();
如何让来电者使用await
以便我可以摆脱.Result
?