OperationCanceledException
とTaskCanceledException
の違いは何ですか? .NET 4.5を使用しており、async
/await
キーワードを使用している場合、どちらをキャッチする必要がありますか?
OperationCanceledException
は、単に TaskCanceledException
の基本クラスです。したがって、前者をキャッチしても、後者をキャッチします。
実際のタスクが関与していないため、同時コレクションの一部の操作はOperationCanceledException
のみをスローします(少なくともパブリックAPI懸念される)。見る - BlockingCollection.TryTake
例。
OperationCanceledException
を投げただけの操作が原因でタスクがキャンセルされた場合に備えて、OperationCanceledException
をキャッチします。おそらく「キャンセルのみ」として扱いたいと思うでしょう。