Menangkap pengecualian yang dibangkitkan dalam System.Threading.Tasks.Task
Dengan pengenalan async dan menunggu kata kunci, pengendalian pengecualian dalam Tasks menjadi ketara lebih mudah. Anda boleh menggunakan blok cuba-tangkap dalam kaedah async untuk menangkap pengecualian seperti berikut:
try { var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); await task; } catch (Exception e) { // Perform cleanup here. }
Ingat untuk menandakan kaedah pengekapan dengan kata kunci async untuk mendayakan penggunaan tunggu.
Untuk versi C# yang lebih awal, anda boleh mengendalikan pengecualian menggunakan kelebihan ContinueWith yang menerima nilai TaskContinuationOptions:
var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
TaskContinuationOptions.OnlyOnFaulted menyatakan bahawa kesinambungan hanya perlu dilaksanakan apabila tugas anteseden membuang pengecualian.
Anda juga boleh mengendalikan kes bukan luar biasa dengan berbilang panggilan ke ContinueWith :
task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion); task.Start();
Kaedah ini menawarkan pendekatan yang berbeza untuk pengendalian pengecualian dalam Tugasan, memberikan fleksibiliti dan penyesuaian berdasarkan versi C# anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Berkesan Mengendalikan Pengecualian dalam Tugasan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!