উত্তর:
OperationCanceledException
কেবল TaskCanceledException
এটির জন্য বেস ক্লাস - সুতরাং যদি আপনি প্রাক্তনটিকে ধরে ফেলেন তবে আপনি পরবর্তীটিকে এখনও ধরতে পারবেন।
সাম্প্রতিক সংগ্রহগুলিতে কিছু ক্রিয়াকলাপ কেবল ছোঁড়ে OperationCanceledException
, কারণ এতে কোনও আসল কাজ নেই (অন্ততপক্ষে জনসাধারণের API সম্পর্কিত)। দেখুন BlockingCollection.TryTake
একটি উদাহরণ জন্য।
OperationCanceledException
কোনও অপারেশনের কারণে টাস্ক বাতিল হওয়ার ক্ষেত্রে আমি ন্যায়বিচারটি ধরব যা নিজেই ফেলেছিল OperationCanceledException
- আপনি সম্ভবত এখনও এটিকে "কেবল বাতিল" হিসাবে গণ্য করতে চান।
await enumerable.ForEachAsync( async () => { throw new ApplicationException( "Test" ); } );
কোনওভাবে কোনও ব্যতিক্রম ছুঁড়ে ফেলি তবে এটি একটি 'টাস্ক ক্যান্সেলড এক্সসেপশন'-এ পরিবর্তিত হয়। কোন ধারণা কিভাবে হতে পারে? এটি আমার জন্য সমস্যা কারণ আমি 'সত্য' অপারেশন ক্যান্সেলড এক্সসেপশন ধরার জন্য চাই (অপারেশনক্যান্সেলড এক্সেকশন) তবে আমি এই টাস্ক ক্যান্সেলড এক্সেকশন (যা সত্যই অ্যাপ্লিকেশনএক্সসেপশন হওয়া উচিত) ধরা চাই না।