작업 취소를 처리하기 위해, 나는 모든 코드를 통해 볼 수,이 패턴에 대한 걱정 :일반 접근 방식은 내가 코드 리뷰를하고있어 제대로
try
{
await DoSomethingAsync();
await DoSomethingElseAsync();
// and so on...
}
catch (OperationCanceledException)
{
// all good, user cancelled
// log and return
return;
}
// handle other particular exceptions
// ...
catch (Exception ex)
{
// fatal error, alert the user
FatalErrorMessage(ex);
}
내가 OperationCanceledException
을 처리에 대한 걱정 부분 . 이 코드도 AggregateException
을 처리해야하며 내부가 예외인지 여부는 OperationCanceledException
입니까?
저는 Task.Wait
또는 Task.Result
이 OperationCanceledException
이 아닌 AggregateException
인 것을 알고 있습니다. 코드 작성자는 async/await
만을 사용하고 결코 Wait/Result
을 사용하지 않는다고 확신했습니다. 따라서 그녀는 취소를 위해 AggregateException
을 추가적으로 관찰한다는 생각을 좋아하지 않습니다. 그러나 제 요점은 표준 Task
기반 BCL API는 OperationCanceledException
을 여전히 AggregateException
으로 바꿀 수 있습니다. 여전히 내부적으로 Task.Result
에 액세스 할 수 있기 때문입니다.
의미가 있습니까? OperationCanceledException
과 AggregateException
을 모두 처리하는 것에 대해 걱정해야합니까?
@arnon 감사합니다. 합리적인 것 같아서 잠시 후 답변으로 받아 들일 것입니다. – avo
@avo 환영합니다 :) – i3arnon