Some operations on concurrent collections throw just
OperationCanceledException, as there aren't any actual tasks involved (at least as far as the public API is concerned). See
BlockingCollection.TryTake for an example.
I would catch the
OperationCanceledException just in case the task is cancelled due to an operation which itself just threw
OperationCanceledException - you probably still want to treat that as "just cancellation".