我正在尝试使用ContinueWith()
. 如果我只是从继续操作中抛出,事情似乎可以工作,但我的调试器声称异常未处理。我做错了什么还是这是 Visual Studio 的问题?有没有更干净的方法来做到这一点,或者有一种方法可以解决我的调试器停止最终处理的异常的问题?
下面的测试通过并打印“按预期捕获包装异常”,但是当我调试它时,该throw new CustomException
行显示为“用户代码未处理”。
var task = DoWorkAsync().ContinueWith(t => {
throw new CustomException("Wrapped", t.Exception.InnerException); // Debugger reports this unhandled
}, TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
try {
task.Wait();
Assert.Fail("Expected work to fail");
} catch (AggregateException ag) {
if (!(ag.InnerException is CustomException))
throw;
}
Console.WriteLine("Caught wrapped exception as expected");